使用 __slots__

使用 __slots__

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

给一个实例绑定属性和方法,对另外一个实例是不起作用的。这时候给类绑定方法,然后该方法对所有实例都有效。

比如说:

class Person(object):

def __init__(self, money):

self.money = money

def rmb():

print('I have money')

a = Person()创建一个实例

fromtype importMethodType

a.rmb = MethodType(rmb, a)#给a绑定一个rmb()方法

a.rmb()#输出I have money

b = Person()创建另一个实例

b.rmb()#输出错误信息AttributeError b对象没有rmb的方法

Person.rmb() = rmb()#给类添加rmb方法

a.rmb()和b.rmb()#现在所有实例都输出:I have money

__slots__ (限制实例的属性)

如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加name和age属性。

为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性:

class Student(object):

__slots__ = ('name', 'age')#用tuple定义允许绑定的属性名称

使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容