# 创建一个class实例
class Student(object):
pass
# 给实例绑定一个属性
s=Student()
s.name = 'Micheal' # 动态给实例绑定一个属性
print(s.name)
# 给实例绑定一个方法
def set_age(self,age):
self.age = age
from types import MethodType
s.set_age = MethodType(set_age,s)# 给实例绑定一个方法,对其他的实例不起作用
s.set_age(25)# 调用实例方法
print (s.age)# 测试结果
# 给所有的实例绑定方法,可以给class绑定方法
def set_score(self,score):
self.score = score
Student.set_score = set_score
# __slots__的使用
# Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性
class Student(object):
__slots__ = ('name','age')# 用tuple定义允许绑定的属性名称
s = Student() # 创建新的实例
s.name = 'Michael' # 绑定属性name
s.age = 25 # 绑定age属性
# s.score = 99 # 绑定属性score 报错
print (s.name,s.age,s.score)
'''
__slots__定义的属性仅对当前类实例起作用,对继承的子类不起作用
除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__
'''
__solts__
最新推荐文章于 2021-05-20 15:52:48 发布