#通过字符串映射或修改程序运行时的状态、属性、方法
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("NiuHanYang")
choice = input(">>:").strip() #输入name
if hasattr(d,choice): #判断一个对象d里是否有对应的choice字符串的方法或者属性
#getattr(d,choice)('包子') #执行相应的方法
getattr(d, choice)
else:
setattr(d,choice,bulk) #setattr在实例中增加一个方法或者属性,d.choice = bulk,choice是用户输入的字符串;setattr(x, 'foobar', 123) is equivalent to x.foobar = 123
func = getattr(d, choice)
func(d)
print(d.name)
delattr(d,choice ) #删除实例的一个方法或者属性
#print(d.name) #再打印name出错
hasattr(obj,name_str) , 判断一个对象obj里是否有对应的name_str字符串的方法
getattr(obj,name_str), 获取obj对象里name_str的对应的方法的内存地址
setattr(obj,'y',z), 在实例中增加一个方法或者属性 is equivalent to ``x.y = v''
delattr(d,choice ) 删除实例d中的choice,其中choice可以是方法也可以是属性;