1 # 将这个方法动态装入类中进行调用
2 def bulk(self):
3 print('%s is yelling...' % self.name)
4
5 class Dog(object):
6 def __init__(self,name):
7 self.name = name
8 def eat(self,food):
9 print('%s is eat %s' % (self.name,food))
10
11 obj = Dog('沙皮')
12 mess = input('请输入操作的方法:')
13 if hasattr(obj,mess):
14 #-----删除---
15 #delattr(obj,mess) # 模拟传入name,删除name属性
16 #print(obj.name) # 报错提示没有name属性
17 #-----以字符串打印方法值---
18 # fun = getattr(obj,mess) # 这里将通过getattr得到talk方法的内存地址
19 # fun('baba')
20 #-----重置属性值---
21 # setattr(obj,mess,'22') # 这里可以重新修改已存在的属性值
22 # print(getattr(obj,mess))
23 else:
24
25 #------设置将类外面的函数引入类中----
26 # setattr(obj,mess,bulk) # 动态将bulk函数装入类中
27 # getattr(obj,mess)(obj) # 动态使用getattr方法获取输入值,然后将obj对象本身当参数传入,因为上面的bulk函数有self参数。
28
29 # -----设置动态传入属性
30 setattr(obj,mess,22) # 设置默认属性值,
31 print(getattr(obj,mess)) # 返回默认属性值22
32 # 可以重新设置已存在的属性值