反射
hasattr(obj,name_str) , 判断一个对象obj里是否有对应的name_str字符串的方法
getattr(obj,name_str), 根据字符串去获取obj对象里的对应的方法的内存地址
setattr(obj,'y',z), is equivalent to ``x.y = v''
delattr 删除属性或者方法
# coding=utf-8
# Author: RyAn Bi
def bulk(self):
print('%s is calling'%self.name)
class Dog(object):
def __init__(self,name):
self.name = name
def eat(self,some):
print('%s is eating %s'%(self.name,some))
d= Dog('abc')
choice = input('>>:').strip()
#print(hasattr(d,choice)) #判断dog里是否有choice赋值的属性
#print(getattr(d,choice)) #获取dog里的choice的属性
if hasattr(d,choice):
func = getattr(d,choice)
func('dce')
else:
#setattr(d,choice,bulk) #输入talk,新建了一个方法
#d.talk(d)
setattr(d,choice,22) #新建了一个属性 getattr(d,choice) = 22
print(getattr(d,choice))