Python学习笔记——__slots__

今天周末简单的说一下slots这个东西。

我们上次说了,Python是动态语言,是可以动态添加类和对象的属性的,利用对象名/类名.属性名 = types.MethodType(方法名,对象名/类名)动态为类或者对象添加方法。

slots对动态添加对象属性的影响

我们可以在构造类的时候做一些限制。

我们看一个例子。

这里写图片描述

这是我们上次说的,动态添加类属性与对象属性。

添加了一个对象属性name一个类属性age

然后在对象中可以直接调用。

假如说,我利用类的私有属性slots标记下只能够动态创建属性名为name的属性。

这里写图片描述

只能拥有name属性,当为对象动态添加age的时候程序就挂了。

可见slots对对象属性的添加是起限制作用的。

slots对动态添加类属性的影响

这里写图片描述

我们直接为类添加属性,是没有问题的,对象也会拥有类的这个属性,并且调用name,age都没有问题

可见slots对类属性的添加是不起作用的。

slots对动态添加对象方法的影响

下面我们动态添加一下对象方法。

这里写图片描述

由上图我们看出,slots对动态添加对象方法也是有限制作用的。

slots对动态添加类方法的影响

这里写图片描述

上图我们添加了类属性xiaoming,然后添加了类方法run,后创建对象,利用对象调用run()方法也是可行的

可见slots对动态添加类方法有没有影响。


总结

在构造类的时候写入私有属性

slots = (‘属性名’)

这就意味着,这个类生成的对象,在动态添加元素的时候只能够添加元祖中的元素名。从而限制对象的动态添加元素行为。

添加类元素,完全不受它的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值