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哪年出来的

Python中的单引号双引号有什么区别

Python file truncate() 方法是什么?能用在什么地方?

Python写入已存在的excel数据实例

如何获取Python中的对象属性?(实例讲解)

学习Python将中文数字转化成阿拉伯数字

Python能做软件开发吗

Python3.6和3.7有什么区别

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




打赏

取消

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

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

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

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

评论

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