面向对象高级编程—使用___slots__

当创建一个类的实例之后,可以给这个实例绑定任何属性和方法,

class Student(objecdt):
    pass
s = Student()
s.name = 'ZhuYong'
>>>print(s.name)
ZhuYong

给实例加上方法(这种方法只对当前实例起作用,对其他实例不起作用):

>>>def set_age(self,age):
... self.age = age
...
>>>from types = MethodType(set_age,s)
>>>s.set_age(22)
>>>s.age
22

给类添加方法(对所有的实例都起作用):

def set_score(self,score):
... self.score = score
...
>>>Student.set_score = set_score

t通常可以直接在class中定义方法,但是python允许在程序运行过程中给clas动态添加功能。

使用slots可以限制这个class实例可以添加的属性:

class Student(object):
    __slots__ = ('name','age')

这表明该class的实例只能添加’name’和’age’这两个属性。
该限制只对当前clas起作用,对其子类不起作用,除非子类也使用了’slots‘,则孜勒的实例个定义的属性为自身限制的和父类限制的。

你可能感兴趣的:(Python)