python类的__slots__属性

学习版本3.6.4

1.当一个类的对象不含有__slots__的类可以随时给类添加属性或方法

2.当一个类的对象有__slots__属性时候且__slots__的元素不包含‘__dict__’时候,只能声明与__slots__中的元素同名的属性或方法。

3.当一个类的对象有__slots__属性且__slots__的元素中包含'__dict__'时候,跟1一样能给类添加任意名字的属性或方法。

注意,类随时都能添加属性或方法
class A(object):
    name = 'A'

class B(object):
    name = 'B'
    __slots__ = ['a', 'b']

class C(object):
    name = 'C'
    __slots__ = ['a', 'b', '__dict__']

def testObj(myobj):
    try:
        myobj.c = 10
        print(myobj.c)
    except Exception as e:
        print('error: '+myobj.name)
        print(str(e))

if __name__ == '__main__':
    testObj(A())
    testObj(B())
    testObj(C())

运行结果:

10
error: B
'B' object has no attribute 'c'
10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值