参考:http://www.cnblogs.com/alex3714/articles/5213184.html
hasattr(obj,name_str):判断一个对象obj里是否有对应的name_str字符串的方法
getattr(obj,name_str):根据字符串取获取obj对象里的对应的方法的内存地址
setattr(obj,"y",z):相当于x.y = v
delattr(obj,name_str):删除一个属性
def bulk(self): ''' 类不存在的方法,利用反射的情况,需要写在类外 :param self: :return: ''' print("%s 在叫!"%self.name) class Dog(object): ''' test反射 ''' def __init__(self,name): self.name =name def eat(self): print("%s 吃着...."%self.name) d = Dog("alex") choice = input("choice>>:").strip() a = hasattr(d,choice)#判断输入的字符串是否在实例d里,若存在,则返回True,否则False if a: print(a) b = getattr(d,choice) print(b) ''' 输入eat,返回的b就是内存对象,可以加()调用对应函数 输入name,返回的b就是实例属性 ''' # 输入的字符串不在类里,则可以利用setattr(x,"y",v),x.y = v 设置对象 else: c = setattr(d,choice,None)#d.choice = None d = getattr(d,choice)#获取d.choice的值 print(c) print(d)
def bulk(self): ''' 类不存在的方法,利用反射的情况,需要写在类外 :param self: :return: ''' print("%s 在叫!"%self.name) class Dog(object): ''' test反射 ''' def __init__(self,name): self.name =name def eat(self): print("%s 吃着...."%self.name) d = Dog("alex") choice = input("choice>>:").strip() a = hasattr(d,choice)#判断输入的字符串是否在实例d里,若存在,则返回True,否则False if a: print(a) b = getattr(d,choice) print(b) delattr(d,choice)#删除实例对应的属性 ''' 输入eat,返回的b就是内存对象,可以加()调用对应函数 输入name,返回的b就是实例属性 ''' # 这里显示删除name属性的例子,所以提示错误 print(d.name)