Python面向對象之-反射
阿新 • • 發佈:2019-02-17
int pri 反射 color ini 返回 pre getattr del
Python中一切皆對象,在Python中的反射:通過字符串的形式操作對象的屬性
- hasattr 判斷是否有改屬性或者方法,有返回True,沒有返回false
- getattr 如果是屬性獲得該屬性的值,如果是方法獲得該方法的內存地址
- setattr
- delattr
class Person: role = ‘person‘ def __init__(self,name): self.name = name def walk(self): print("%s is walking"%self.name) wangys = Person(‘wangys‘) print(hasattr(wangys,‘role‘)) print(hasattr(wangys,‘name‘)) print(hasattr(wangys,‘walk‘)) print(hasattr(wangys,‘eat‘)) True True True False print(getattr(wangys,‘role‘)) print(getattr(wangys,‘name‘)) print(getattr(wangys,‘walk‘)) getattr(wangys,‘walk‘)() person wangys <bound method Person.walk of <__main__.Person object at 0x00000216037DDA90>> wangys is walking
通常hasattr跟getattr結合使用
class Person: role = ‘person‘ def __init__(self,name): self.name = name def walk(self): print("%s is walking"%self.name) wangys = Person(‘wangys‘) if hasattr(wangys,‘role‘): print(getattr(wangys,‘role‘)) if hasattr(wangys,‘walk‘): getattr(wangys,‘walk‘)() if hasattr(wangys,‘eat‘): getattr(wangys,‘eat‘)() else: print(‘沒有改方法‘) person wangys is walking 沒有改方法
Python面向對象之-反射