当前位置: 首页 > 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.xdnf.cn/news/744931.html

相关文章:

  • 某乎x-zse-96 破解(补环境版本)
  • 2025.5.29 学习日记 docker概念以及基本指令
  • AE 脚本表达式错误 Default ColorSelectionwhile (true){ break;} }
  • Java中Redis面试题集锦(含过期策略详解)
  • 【GESP真题解析】第 2 集 GESP 三级样题卷编程题 1:逛商场
  • LG P4119 [Ynoi2018] 未来日记 Solution
  • Python训练营打卡Day41(2025.5.31)
  • MySQL 读懂explain 执行计划
  • 【2025年软考中级】第二章2.2 程序设计语言的基本成分
  • 二叉搜索树——红黑树
  • WIFI中2.4G和5G的区别,和WiFi5,WiFi6和WiFi7的区别,
  • 【C++】模板
  • JWT 原理与设计上的缺陷及利用
  • 数据库-MySQL索引事务
  • 深入理解MCP模型协议:构建全能AI服务端
  • 计算机视觉与深度学习 | 基于Matlab的门禁指纹识别与人脸识别双系统实现
  • 【项目】在线OJ(负载均衡式)
  • (新)MQ高级-MQ的可靠性
  • AI炼丹日志-25 - OpenAI 开源的编码助手 Codex 上手指南
  • git 之 stash
  • Git -> Git Stash临时保存当前工程分支修改
  • 第二十章 文本处理
  • 深入解析C#多态性:基类引用、虚方法与覆写机制
  • 字符串索引、幻读的解决方法
  • Pytorch---ImageFolder
  • C++ 的四种强制类型转换:static_cast、dynamic_cast、const_cast 和 reinterpret_cast
  • MIT 6.S081 2020 Lab6 Copy-on-Write Fork for xv6 个人全流程
  • 修改 vscode 左侧导航栏的文字大小 (更新版)
  • Cursor奇技淫巧篇(经常更新ing)
  • # STM32F103 串口打印配置(HAL库)