1. 程式人生 > >Python面向對象之-反射

Python面向對象之-反射

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面向對象之-反射