类的 __slots__ 列表

类的 slots 列表

类的 slots 列表:
* 作用:
限定一个类创建的实例只能有固定的属性(实例变量)
不允许对象添加列表之外的属性(实例变量)
防止用户因错写属性名而发生程序错误
* 说明:
slots 属性绑定一个字符串列表
含有 slots 属性的类所创建的实例对象没有 dict 属性,
即此实例不用字典来存储对象的实例属性
* 示例见:

class Human:

    __slots__ = ['name', 'age']  # 限定实例变量的属性 防止误写变量名错误

    def __init__(self, n, a):

        self.name = n
        self.age = a

    def info(self):

        print(self.name, '今年', self.age, '岁')


h1 = Human('小张', 8)
h1.info()  # ??? 小张 今年 8 岁

# 没有slots 列表之前,没有限定时的 误写变量名字
# h1.Age = 9  # 新创建了一个实例属性,没有改变age属性。变量名区分大小写
# h1.info()  # ??? 小张 今年 8 岁

# 添加列表后
print(h1.__dict__)
AttributeError: 'Human' object has no attribute '__dict__'
# 限定实例变量属性后,对象不再拥有 __dict__ 属性

h1.Age = 9  # 创建slots列表之后的误写 会报错
AttributeError: 'Human' object has no attribute 'Age'
# 类对象中没有该 实例变量
# 限定实例变量后不能再添加其余变量
h1.info()  # ??? 小张 今年 8 岁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值