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類動態地添加屬性和方法。
自省和反射可以使代碼更加靈活,使我們可以在運行時動態地根據需要來操作對象的屬性和方法。
上一篇python 自己寫庫
下一篇python 自己寫工具