python __slot__的使用

本文对比分析了Python中使用与不使用__slots__的区别。默认情况下,Python使用字典存储对象属性,允许动态添加属性。而使用__slots__可以限制属性,提高内存效率,但不允许动态添加未声明的属性。

1、不使用__slots__

class MyClass(object):

    def __init__(self, name, identifier):
        self.name = name
        self.identifier = identifier

obj = MyClass('jack', 123)
obj.k = 456
print(obj.k)

  默认情况下Python用一个字典来保存一个对象的实例属性。这非常有用,因为它允许我们在运行时去设置任意的新属性。

2、使用__slots__

class MyClass(object):
    __slots__ = ['name', 'identifier']
    def __init__(self, name, identifier):
        self.name = name
        self.identifier = identifier

obj = MyClass('jack', 123)
obj.k = 456
print(obj.k)

  执行时产生错误:

AttributeError: 'MyClass' object has no attribute 'k'

 

  具体参见:https://blog.youkuaiyun.com/qq_35636311/article/details/78248491

 

转载于:https://www.cnblogs.com/bad-robot/p/9851544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值