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

python中常用的内置属性built-in attributes

1. __dict__

  • 用途:用于存储对象的可写属性。
  • 示例
class Person:def __init__(self, name, age):self.name = nameself.age = agep = Person("Alice", 30)
print(p.__dict__)  # 输出: {'name': 'Alice', 'age': 30}

2. __class__

  • 用途:指向创建对象的类。
  • 示例
num = 42
print(num.__class__)  # 输出: <class 'int'>

3. __name__

  • 用途:表示类、函数、模块的名称。
  • 示例
def greet():passprint(greet.__name__)  # 输出: 'greet'

4. __doc__

  • 用途:用于存储文档字符串(docstring)。
  • 示例
def add(a, b):"""返回两个数的和"""return a + bprint(add.__doc__)  # 输出: '返回两个数的和'

5. __module__

  • 用途:表示定义对象的模块名称。
  • 示例
from datetime import datetimedt = datetime.now()
print(dt.__module__)  # 输出: 'datetime'

6. __bases__

  • 用途:是一个包含基类的元组,仅对类有效。
  • 示例
class A:passclass B(A):passprint(B.__bases__)  # 输出: (<class '__main__.A'>,)

7. __mro__

  • 用途:显示方法解析顺序,仅对类有效。
  • 示例
class A:passclass B(A):passclass C(B):passprint(C.__mro__)  # 输出: (<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)

8. __slots__

  • 用途:限制类能添加的属性。
  • 示例
class Point:__slots__ = ['x', 'y']p = Point()
p.x = 10  # 允许
p.y = 20  # 允许
p.z = 30  # 报错: AttributeError

9. __file__

  • 用途:表示模块的文件路径,不过它仅对模块有效。
  • 示例
import os
print(os.__file__)  # 输出: '/usr/lib/python3.9/os.py'(路径可能会因系统不同而有差异)

10. __str____repr__

  • 用途:它们是对象的字符串表示形式。
  • 示例
class Person:def __init__(self, name):self.name = namedef __str__(self):return f"Person({self.name})"p = Person("Bob")
print(p)  # 输出: 'Person(Bob)'

11. __len__

  • 用途:用于返回对象的长度,一般是通过 len() 函数来调用。
  • 示例
class MyList:def __init__(self, items):self.items = itemsdef __len__(self):return len(self.items)m = MyList([1, 2, 3])
print(len(m))  # 输出: 3

12. __call__

  • 用途:使对象可以像函数一样被调用。
  • 示例
class Adder:def __call__(self, a, b):return a + badd = Adder()
print(add(3, 4))  # 输出: 7

总结

内置属性是 Python 语言的重要组成部分,它们为对象提供了元数据和特殊行为。不过,你应当谨慎使用这些属性,因为直接操作它们可能会破坏对象的封装性。在实际的编程过程中,建议优先使用公共 API,而不是直接访问内置属性。

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

相关文章:

  • 《高等数学》(同济大学·第7版) 的 详细章节目录
  • 10.安卓逆向2-frida hook技术-frida基本使用-frida指令(用于hook)
  • DeepSeek API流式输出与多轮对话示例
  • DFS入门刷题
  • OD 算法题 B卷【模拟消息队列】
  • Arm处理器调试采用jlink硬件调试器的命令使用大全
  • 人工智能在智能供应链中的创新应用与未来趋势
  • 2024年ESWA SCI1区TOP,自适应学习灰狼算法ALGWO+无线传感器网络覆盖优化,深度解析+性能实测
  • 开源版 PyMOL 如何绘制 Galidesivir 分子结构 ?
  • 项目:贪吃蛇实现
  • 流媒体协议分析:流媒体传输的基石
  • Jinja2 模板继承机制
  • Mybatis ORM SpringORM
  • 【代码坏味道】膨胀类 Bloaters
  • Go语言的context
  • 《高等数学》(同济大学·第7版) 第一节《映射与函数》超详细解析
  • 【算法】递归与分治策略
  • Cesium快速入门到精通系列教程一
  • 【Linux】进程地址空间揭秘(初步认识)
  • 【计算机网络】 ARP协议和DNS协议
  • 计算机网络物理层基础练习
  • 【CC协议】知识共享许可协议(Creative Commons Licenses)体系解析
  • Python 中Vector类的格式化实现,重点拆解其超球面坐标系的设计精髓
  • 15分钟讲解所有较知名编程语言
  • DAY 16 numpy数组与shap深入理解
  • GD32F103系列工程模版创建记录
  • js数据类型有哪些?它们有什么区别?
  • 如何找到一条适合自己企业的发展之路?
  • Agent开发详解
  • 【Qt】Bug:findChildren找不到控件