python里的__slots__能做什么?(实例解析)


本文摘自php中文网,作者乌拉乌拉~,侵删。

在这篇文章之中我们来了解一下关于python__slots__的相关知识,有些朋友可能是刚刚接触到python这一编程语言,对这一方面不是特别的了解,在接下来这篇文章将会来带大家来了解关于python__slots__的相关知识。

如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加name和age属性。

为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性:

1

2

class Student(object):

    __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称

然后,我们试试:

1

2

3

4

5

6

7

>>> 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__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的:

1

2

3

4

5

>>> class GraduateStudent(Student):

...     pass

...

>>> g = GraduateStudent()

>>> g.score = 9999

除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__。

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了python__slots__的相关知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。

更多相关知识,请访问php中文网Python教程栏目。

以上就是python里的__slots__能做什么?(实例解析)的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中关于装饰器级连的示例

Python做出新闻聚合项目

关于Python下如何实现rsa的加密解密以及签名与验证功能的实例分析

Python 爬虫网页登录的实现

使用Python创建员工信息表的实例代码

没学过编程可以自学Python

Python如何删除txt文件

Python使用缩进来体现代码之间的逻辑关系吗?

Python开发安卓app可行吗

Python中if语句用法

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...