返回介绍

21.7 类作为对象

发布于 2024-02-05 21:59:46 字数 1037 浏览 0 评论 0 收藏 0

Python 数据模型为每个类定义了很多属性,参见标准库参考中“Built-in Types”一章的“4.13. Special Attributes”一节。其中三个属性在本书中已经见过多次:__mro__、__class__ 和 __name__。此外,还有以下属性。

cls.__bases__

由类的基类组成的元组。

cls.__qualname__

Python 3.3 新引入的属性,其值是类或函数的限定名称,即从模块的全局作用域到类的点分路径。例如,在示例 21-6 中,内部类 ClassTwo 的 __qualname__ 属性,其值是字符串 'ClassOne.ClassTwo',而 __name__ 属性的值是 'ClassTwo'。这个属性的规范是“PEP 3155—Qualified name for classes and functions”。

cls.__subclasses__()

这个方法返回一个列表,包含类的直接子类。这个方法的实现使用弱引用,防止在超类和子类(子类在 __bases__ 属性中储存指向超类的强引用)之间出现循环引用。这个方法返回的列表中是内存里现存的子类。

cls.mro()

构建类时,如果需要获取储存在类属性 __mro__ 中的超类元组,解释器会调用这个方法。元类可以覆盖这个方法,定制要构建的类解析方法的顺序。

 dir(...) 函数不会列出本节提到的任何一个属性。

我们对类元编程的学习到此结束。这是个很大的话题,我只讲了皮毛。因此,本书各章都有“延伸阅读”一节。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文