Python对象自省机制
约 422 字大约 1 分钟
2025-10-02
Python 的对象自省机制是指在运行时动态获取对象信息的能力。通过自省,可以查看对象的类型、属性、方法等信息。
查看对象的类型
使用type()函数可以获取对象的类型
x = 42
print(type(x)) # 输出: <class 'int'>查看对象的所有属性和方法
使用dir()函数可以查看对象的所有属性和方, 返回列表
my_list = [1, 2, 3]
print(dir(my_list)) # 输出: ['__add__', '__class__', '__contains__', ...]使用__dict__属性可以查看对象的所有属性, 返回字典
class MyClass:
def __init__(self):
self.x = 10
self.y = 20
obj = MyClass()
print(obj.__dict__) # 输出: {'x': 10, 'y': 20}检查对象是否包含指定属性或方法
使用hasattr()函数可以检查对象是否包含指定属性或方法
class MyClass:
def __init__(self):
self.value = 10获取对象的属性或方法
使用getattr()函数可以获取对象的属性或方法
class MyClass:
def __init__(self):
self.value = 10
obj = MyClass()
print(getattr(obj, 'value')) # 输出: 10设置对象的属性值
使用setattr()函数可以设置对象的属性值
class MyClass:
def __init__(self):
self.value = 10
obj = MyClass()
setattr(obj, 'value', 20)
print(obj.value) # 输出: 20检查对象是否为某个类的实例
使用isinstance()函数可以检查对象是否为某个类的实例
class MyClass:
pass
obj = MyClass()
print(isinstance(obj, MyClass)) # 输出: True
print(isinstance(obj, str)) # 输出: False检查一个类是否是另一个类的子类
使用issubclass()函数可以检查一个类是否是另一个类的子类
class Parent:
pass
class Child(Parent):
pass
print(issubclass(Child, Parent)) # 输出: True
print(issubclass(Parent, Child)) # 输出: False