python:反射

反射

     hasattr(obj,name_str) ,判断一个obj对象里是否有对应的name_str的字符串方法

     getattr(obj,name_str) ,根据字符患去获取obj对象里对应的方法的内存地址

    setattr(obj,name_str,func_name),装一个方法到对象里

例子:

def bulk(self):

       print("%s is talking。。。。。。"%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("lili")
choice=input("请选择方法>>").strip()
if hasattr(d,choice): #判断一个d对象里是否有choice字符串对应的方法
    func=getattr(d,choice) #根据字符串去获取d对象里对应的方法的内存地址
    func("liming")
else:
    setattr(d,choice,bulk) #把bulk方法(在类前面提前写好的)以choice的形式装载到对象d中,所以调用时用talk,而不是bulk
    d.talk(d) 

你可能感兴趣的:(python)