如何进行实现Python配置?
发布网友
发布时间:2022-05-02 22:39
我来回答
共1个回答
热心网友
时间:2022-04-18 05:50
例如,所有方法名用大写字母开头,所有数据属性名前用一个唯一的字符串开头(或者只是一个下划线),或方法名用动词而数据名用名词。数据属性可以被方法引用也可以被普通用户(“客户”)引用。换句话说,类不能用来构造抽象数据类型。实际上。
Python中没有任何办法可以强制进行数据隐藏——这些都是基于惯例。(另一方面,
Python的实现是用C写的,它可以完全隐藏实现细节,必要时可以控制对象存取;用C写的Python扩展模块也有同样特性)。
客户要自己小心使用数据属性——客户可能会因为随意更改类对象的数据属性而破坏由类方法维护的类数据的一致性。注意客户只要注意避免名字冲突可以任意为实例对象增加新数据属性而不需影响到方法的有效性——这里,有效的命名惯例可以省去许多麻烦。
从方法内要访问本对象的数据属性(或其它方法)没有一个简写的办法。我认为这事实上增加了程序的可读性:在方法定义中不会混淆局部变量和实例变量。习惯上,方法的第一自变量叫做self。这只不过是一个习惯用法:名字self在Python配置中没有任何特殊意义。但是。
因为用户都使用此惯例,所以违背此惯例可能使其它Python配置不容易读你的程序,可以想象某些类浏览程序会依赖于此惯例)。作为类属性的任何函数对象都为该类的实例定义一个方法。函数的定义不一定必须在类定义内部:只要在类内把一个函数对象赋给一个局部变量就可以了。例如:
classComplex:
...def__init__(self,realpart,imagpart):
self.r=realpart
self.i=imagpart
...x=Complex(3.0,-4.5)
x.r,x.i
(3.0,-4.5)现在f、g和h都是类C的属性且指向函数对象,所以它们都是C的实例的方法——其中h与g 完全等价。注意我们应该避免这种用法以免误导读者。方法可以用代表所属对象的self自变量来引用本类其它的方法,如:
classVirtualAttributes:__vdict=None
__vdict_name=locals().keys()[0]
def__init__(self):
self.__dict__[self.__vdict_name]={}
def__getattr__(self,name):
returnself.__vdict[name]
def__setattr__(self,name,value):
self.__vdict[name]=value
方法可以和普通函数一样地引用全局名字。方法的全局作用域是包含类定义的模块。(注意类本身并不被用作全局作用域!)虽然我们很少需要在方法中使用全局数据,全局作用域还是有许多合法的用途:
一段需要以某种抽象数据类型作为输入的Python程序经常可以接受一个类作为输入,该类只是模仿了应输入的数据类型的方法。例如,如果你有一个函数是用来格式化一个文件对象中的数据源码天空