python之反射实例 setattr delattr

# __*__ coding: utf-8 __*__
__author__ = "David.z"

def bulk(self):
    print("%s is yelling..."%self.name)

class Dog(object):

    def __init__(self,name):
        self.name = name

    def eat(self,food):
        print(" %s is eating..."%self.name,food)

d = Dog("Alex")
choice = input(">>:").strip()

if (hasattr(d,choice)):#反射
    delattr(d,choice)
    # attr=(getattr(d,choice))
    # # print(attr)
    # # func("ChrnRonghua")
    # setattr(d,choice,"Ronghua")
else:
    # setattr(d,choice,bulk)
    # d.talk(d)
    setattr(d,choice,None)
    print(getattr(d,choice))
print(d.name)

'''反射
        hasattr(obj,name_str) ,判断一个对象obj里是否有对应的name_str字符串的方法
        getattr(obj,name_str),根据字符串去获取obj对象里的对应的方法的内存地址
        setattr(obj,'y',z),is eauivalent ot "x.y = v"
        delattr  删除
        '''
原文地址:https://www.cnblogs.com/davidz/p/8883421.html