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,而不是直接访问内置属性。