淘先锋技术网

首页 1 2 3 4 5 6 7

Python是一种强大的编程语言,它支持自省和反射功能。自省是指Python可以查询对象的属性和方法,而反射则是指Python可以动态地修改或操作对象的属性和方法。

class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
dog = Dog("Tom", 3)
# 自省
print(hasattr(dog, "name")) # True
print(getattr(dog, "name")) # Tom
print(hasattr(dog, "gender")) # False
# 反射
setattr(dog, "age", 4)
print(dog.age) # 4
# 动态创建属性和方法
setattr(dog, "gender", "male")
def bark(self):
print("汪汪汪")
setattr(Dog, "bark", bark)
dog.bark() # 汪汪汪

在上面的例子中,我们定义了一个Dog类。我们可以使用hasattr函数查询dog对象是否有name、gender属性,使用getattr函数获取name属性的值。我们可以使用setattr函数设置dog对象的age属性,也可以使用setattr函数动态地给dog类动态地添加属性和方法。

自省和反射可以使代码更加灵活,使我们可以在运行时动态地根据需要来操作对象的属性和方法。