__solts__的使用

上面我们说到了Python是动态语言,可以在运行时给实例对象添加属性。但是如果我们不想让别人添加其他属性,进行限制该怎么办呢?

我们可以使用__slots__来对添加的属性进行限制。

class Person(object):
    __slots__ = ("name", "age")

    def __init__(self, name, age):

        self.name = name
        self.age = age

    def eat(self):
        print("我叫%s,我的年龄是%d"%(self.name, self.age))

p = Person("小明", 20)
p.sex = "男"
print(p.sex)
当我们在进行添加新的属性的时候就会报错 AttributeError: 'Person' object has no attribute 'sex'

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

class Person(object):
    __slots__ = ("name", "age")

    def __init__(self, name, age):

        self.name = name
        self.age = age

    def eat(self):
        print("我叫%s,我的年龄是%d" %(self.name, self.age))

p = Person("小明", 20)


class Student(Person):
    print("学生")

stu = Student("小红",18)
stu.task = "好好学习"
print(stu.name)
print(stu.age)
print(stu.task)
打印结果:

学生
小红
18
好好学习

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值