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代表方法名
 
 
多重继承
 
 
定制类
 
 
 
元类
posted on 2016-05-21 21:28  ctw2c  阅读(81)  评论(0)    收藏  举报