当前位置: 首页 > news >正文

Python 类元编程(类作为对象)

类作为对象

Python 数据模型为每个类定义了很多属性,参见标准库参考中“Built-in
Types”一章的“4.13. Special Attributes”一节
(https://docs.python.org/3/library/stdtypes.html#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”(https://www.python.org/dev/peps/pep-3155/)。

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

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

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

http://www.dtcms.com/a/335997.html

相关文章:

  • Makefile介绍(Makefile教程)(C/C++编译构建、自动化构建工具)
  • 为什么神经网络在长时间训练过程中会存在稠密特征图退化的问题
  • LangGraph 的官网的一个最简单的聊天机器人
  • 数据与模型融合波士顿房价回归建模预测
  • SQL Server 2019安装教程(超详细图文)
  • [辩论] TDD(测试驱动开发)
  • 物联网软件开发过程中,数据流图(DFD),用例图,类图,活动图,序列图,状态图,实体关系图(ERD),BPMN(业务流程建模)详解分析
  • 豆包 Java的23种设计模式
  • OpenAI 发布了 GPT-5,有哪些新特性值得关注?国内怎么使用GPT5?
  • 内网后渗透攻击--隐藏通信隧道技术(应用层隧道技术)
  • 『搞笑名称生成器』c++小游戏
  • Nightingale源码Linux进行跨平台编译
  • 7.Ansible自动化之-实施任务控制
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘imageio’问题
  • maxwell安装部署
  • 数据结构:二叉树的高度 (Height)和节点总数 (Count of Nodes)
  • SpringCloud 07 微服务网关
  • C4 架构模型
  • 说一下事件委托
  • Qt——主窗口 mainWindow
  • Django3 - 建站基础知识点总结
  • 【JAVA 核心编程】面向对象中级:封装与访问控制
  • 获取IPv6地址的三种方式
  • 【Git系列】如何从 Git 中删除 .idea 目录
  • Rust:实现仅通过索引(序数)导出 DLL 函数的功能
  • MySQL定时任务详解 - Event Scheduler 事件调度器从基础到实战
  • 学习Stm32 的第一天
  • 基于RK3588的微电网协调控制器:实现分布式能源的智能调控与优化运行
  • git stash临时保存工作区
  • 因果知识图谱:文本预处理的革命性突破