反射
1、hasattr(obj,name_str)判断obj里面是否有对应懂得name_str字符串方法
2、getattr(obj,name_str)根据字符串去获取obj对象里对应的方法的内存地址
3、getattr(obj,y,z) 重新设置属性obj.y=z
4、delattr # 指定删除
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 eat the milk and pick!%s eat %s"%(self.name,self.name,food))
d=Dog("ALEX") choise=input(">>:").strip() #print(hasattr(d,choise)) # 判断d中有没有choise方法!返回True和Flast #print(getattr(d,choise))#获取并调用 if hasattr(d,choise): delattr(d,choise) # 删除东西 #func=getattr(d,choise) # 获取并调用 #``func("孙悟空") #setattr(d,choise,"王八蛋") #重新给self。name赋值 #print(d.name)
else: #setattr(d,choise,bulk) # 动态的装一个方法到类里 d.choise=bulk #func=getattr(d,choise) #func(d) setattr(d, choise,"oxoxox") #添加一个属性 func = getattr(d, choise) print("%s:%s"%(choise,func))
#setattr(d,choise,22)
#print(getattr(d,choise))
#print(d.name)