Python3 __slots__在类中的作用

# __slots__用于限定实例可添加的属性
class SlotsClass(object):
    __slots__ = ('name', 'age')

SlotsClass.name = "Oliver"
SlotsClass.age  = 17

# 添加一个不存在于__slots__的属性, 结果没有报错, 在slots限定
# 下, 可以添加类属性
SlotsClass.phone = 137
instanceSlot = SlotsClass()
print(instanceSlot.name)
print(instanceSlot.age)
print(instanceSlot.phone)

# 下面测试是否可以添加实例属性
class SlotsInstance(object):
    __slots__ = ('name', 'age')
slots = SlotsInstance()
# 添加实例属性
slots.name = "Jame"
slots.age  = "100"
# 添加一个不在slots中的属性, 报错SlotsInstance对象没有该属性
#slots.phone = 159
print(slots.name)
print(slots.age)

你可能感兴趣的:(Python)