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类动态地添加属性和方法。
自省和反射可以使代码更加灵活,使我们可以在运行时动态地根据需要来操作对象的属性和方法。