通过实例了解python__slots__使用方法

 更新时间:2020年09月14日 10:11:57   作者:冷冰若水  
这篇文章主要介绍了通过实例了解python__slots__使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、背景

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__。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 分享介绍Python的9个实用技巧

    分享介绍Python的9个实用技巧

    本文将介绍15个简洁的Python技巧,向着简洁更高效,学习易懂出发,具说只有经验丰富程序员才知道的9种高级Python小技巧,喜欢的朋友快来看看吧
    2021-11-11
  • 用python实现的去除win下文本文件头部BOM的代码

    用python实现的去除win下文本文件头部BOM的代码

    windows环境下新建或编辑文本文件,保存时会在头部加上BOM。使用ftp上传到linux下,在执行时第一行即报错。以下方法可以去除BOM头,有需要的朋友可以参考下
    2013-02-02
  • Python通过Tesseract库实现文字识别

    Python通过Tesseract库实现文字识别

    这篇文章主要介绍了Python通过Tesseract库实现文字识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python爬虫 urllib模块发起post请求过程解析

    python爬虫 urllib模块发起post请求过程解析

    这篇文章主要介绍了python爬虫 urllib模块发起post请求过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python基本语法之运算符功能与用法详解

    Python基本语法之运算符功能与用法详解

    这篇文章主要介绍了Python基本语法之运算符功能与用法,结合实例形式总结分析了Python常见运算符相关使用技巧与操作注意事项,需要的朋友可以参考下
    2019-10-10
  • Python爬虫爬取新浪微博内容示例【基于代理IP】

    Python爬虫爬取新浪微博内容示例【基于代理IP】

    这篇文章主要介绍了Python爬虫爬取新浪微博内容,结合实例形式分析了Python基于代理IP实现的微博爬取与抓包分析相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • 在windows下Python打印彩色字体的方法

    在windows下Python打印彩色字体的方法

    这篇文章主要介绍了Python在windows下打印彩色字体的方法;具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
    2018-05-05
  • python实现过滤敏感词

    python实现过滤敏感词

    这篇文章主要介绍了python如何实现过滤敏感词,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-05-05
  • 详解python字符串驻留技术

    详解python字符串驻留技术

    在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能。
    2021-05-05
  • python2.7实现邮件发送功能

    python2.7实现邮件发送功能

    这篇文章主要为大家详细介绍了python2.7实现邮件发送功能包,含文本、附件、正文图片等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论