通过实例了解python__slots__使用方法
作者:冷冰若水 时间:2023-03-16 13:24:50
一、背景
python是一个动态语言,可以支持我们在运行时动态的给类、对象添加属性或者方法;但是如果我们想要限制可以添加的属性或方法该怎么办呢?
二、__slots__
python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class能添加的属性:
>>> class Student(object):
... __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
...
然后尝试添加属性:
>>> s = Student() # 创建新的实例
>>> s.name = 'Michael' # 绑定属性'name'
>>> s.age = 25 # 绑定属性'age'
>>> s.score = 99 # 绑定属性'score'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute 'score'
由于'score'没有被放到__slots__中,所以不能绑定score属性,试图绑定score将得到AttributeError的错误。
使用__slots__要注意,__slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的:
>>> class GraduateStudent(Student):
... pass
...
>>> g = GraduateStudent()
>>> g.score = 9999
除非在子类中也定义__slots__,这样,子类允许定义的属性就是自身的__slots__加上父类的__slots__。
来源:https://www.cnblogs.com/lit10050528/p/13549762.html
标签:python,slots
0
投稿
猜你喜欢
服务器端控件是如何操作的?
2009-11-01 15:22:00
distinct 多列问题结合group by的解决方法
2024-01-21 11:18:23
详解MySQL性能优化(一)
2024-01-18 11:39:52
Python GAE、Django导出Excel的方法
2023-02-27 13:59:09
从SNS看社会化界面设计(一)
2009-02-23 12:21:00
如何编写一个高效的国税系统通讯录数据库?
2009-11-07 18:53:00
python 实现Flask中返回图片流给前端展示
2023-12-01 06:58:23
pytorch 彩色图像转灰度图像实例
2023-08-02 17:28:37
Python连接es之es更新操作示例详解
2022-11-21 06:11:48
浅谈Python2.6和Python3.0中八进制数字表示的区别
2023-04-22 23:56:42
Python多进程同步简单实现代码
2021-05-17 23:48:04
Python中logging日志模块代码调试过程详解
2021-03-13 05:40:32
Python操作数据库之数据库编程接口
2024-01-25 01:55:41
PHP编码转换函数 自动转换字符集支持数组转换
2024-05-02 17:33:28
Python使用add_subplot与subplot画子图操作示例
2022-12-15 13:14:28
pycharm中选中一个单词替换所有重复单词的实现方法
2022-11-07 02:51:16
Pytest+request+Allure实现接口自动化框架
2023-08-12 17:29:33
sql to sqlalchemy 转换的小例子
2024-01-22 10:50:39
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2024-04-18 09:42:40
IE多版本共存的解决方案——IETester(推荐)
2009-03-26 12:47:00