python 反射

 hasattr

hasattr(object, name) 檢查指定對象是否包含指定的屬性。python

class Comsumer():
    gender = 'girls'
    def __init__(self, name):
        self.name = name

    def buy(self, commodity):
        print('%s買了%s' % (self.name, commodity))

if __name__ == '__main__':
    c = Comsumer('Alice')
    print(hasattr(c, 'gender'))  #True
    print(hasattr(c, 'name'))  #True
    print(hasattr(c, 'buy'))  #True

getattr

getattr(object, name[, default])返回指定對象中指定屬性的值,還可給這個屬性指定默認值。app

class Comsumer():
    gender = 'girls'
    def __init__(self, name):
        self.name = name

    def buy(self, commodity):
        print('%s買了%s' % (self.name, commodity))

if __name__ == '__main__':
    c = Comsumer('Alice')
    gender = getattr(c,'gender')
    print(gender)  #girls
    name = getattr(c,'name')
    print(name)  #Alice
    buyer = getattr(c,'buy')
    buyer('apple')  #Alice買了apple

setattr

setattr(object, name, value) 將指定對象的指定屬性設置爲指定的值。對象

class Comsumer():
    gender = 'girls'
    def __init__(self, name):
        self.name = name

    def buy(self, commodity):
        print('%s買了%s' % (self.name, commodity))

if __name__ == '__main__':
    c = Comsumer('Alice')
    setattr(c, 'gender', 'boy')
    print(c.gender)  #boy
    setattr(c,'name','Eason')
    print(c.name)  #Eason

delattr

delattr(object, name) 刪除指定對象的指定屬性。不能夠刪除類屬性和對象方法。blog

class Comsumer():
    gender = 'girls'
    def __init__(self, name):
        self.name = name

    def buy(self, commodity):
        print('%s買了%s' % (self.name, commodity))

if __name__ == '__main__':
    c = Comsumer('Alice')
    delattr(c, 'name')
    print(hasattr(c, 'name'))  #False
相關文章
相關標籤/搜索