上传者: 26749245
|
上传时间: 2021-08-23 19:38:42
|
文件大小: 1.32MB
|
文件类型: PDF
6.4 一些说明
数据属性可以重写同名的方法属性。这是为了避免在大型系统中产生问题的意外名称冲突。所以用一些减
少冲突的常用方法是很有效果的。常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性
的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性。
数据属性就像和对象的普通用户一样可以被方法引用。换句话说,类不能用来实现纯净的数据类型。事实
上,在 python中不能强制数据隐藏,一切基于约定。(另一方面,如 C 中写的,python的实现可以做到完
全隐藏实现细节并且在必要是可以控制对象的访问,这可以通过 C语言扩展 Python)
客户应该谨慎使用数据属性,客户可能会混淆通过方法来维护的常量。而践踏他们的数据属性。注意只要
能避免重复,客户可以自己添加数据属性给对象实例,而不影响方法的合法性--再次,命名约定可以避免
很多麻烦。
从方法内部引用数据属性(或者其他方法)是没有便捷方式的。 我发现这可以增加方法的可读性,当浏览
一个方法时,不会轻易混淆局部变量和实例变量。
常常,方法的第一参数称为 self。 这里除了约定在没有其他意思,名称 self 对 python绝对没有特别的含义。
但是,要注意,如果不遵守这种约定,你的代码可能对其他 python程序员来说可读性很差。也可以理解,
类浏览程序可能就是基于这种约定的写成的。
任何作为类属性的函数对象定义了一个该类实例的方法。在类定义中在书面上函数定义是封装的有时是没
有必要的,也可以把一个函数对象赋值给在类中的局部变量。例如:
# Function defined outside the class
def f1(self, x, y):
return min(x, x+y)
class C: