python作为一种动态语言,拥有其作为动态语言的灵活性。
动态绑定
定义一个python类,并创建该类的实例(即该类的一个对象实例)后,可以给该实例(或该实例所属类)绑定任何属性和方法,当为某个对象绑定属性或方法时,只限于该实例对象,而该对象所属的类则不拥有动态绑定的属性或方法,也即该实例对应的类的其他实例则不拥有动态绑定的属性或方法,只有为类动态绑定属性或方法后,才会对之后创建的实例起作用。例如:
class Student(object):
pass
def set_age(self,age):
self.age = age
def get_age(self):
return self.age
s = Student() ## 创建类对象实例
s.set_age = MethodType(set_age,s,Student) ## 为该对象动态绑定方法
s.set_age(20) ## 调用动态绑定的方法
Student.get_age = MethodType(get_age,None,Student) ##为Student类动态绑定方法
s.get_age()
属性槽限制(__slots__)
当不想类被无限制的动态添加新属性或方法时,可以使用__slots__(一个元组)进行限制,若属性名不在元组内,则不能为该类(或类对象)动态添加属性或方法。类的__slots__属性不能传递到子类,但是如果子类也定义了__slots__属性,那么子类就会继承父类的__slots__属性的元组内容。
类方法的读写属性
使用@property装饰器
@property ## 只读属性
@xxx.setter ## 可写属性,其中xxx代表方法名
多重继承
定制类
元类

浙公网安备 33010602011771号