反射

本文介绍了Python中反射的应用及动态属性的管理方法,包括如何使用hasattr(), getattr(), setattr() 和 delattr() 进行动态属性的检查、获取、设置和删除。并通过一个Dog类实例演示了这些操作的具体实现。
 1 # 反射:
 2 # hasattr() 判断一个对象里是否有对应的 name_str 字符串的方法
 3 # getattr() 根据字符串获得对象里的对应的方法的内存地址  后面+()可调用
 4 # setattr(obj, 'name', value) 通过字符串设置一个值
 5 # delattr(obj, "str")
 6 def eat(self):
 7     print("eat")
 8 
 9 class Dog(object):
10     def __init__(self, name, age):
11         self.name = name
12         self.age = age
13 
14     def talk(self, who):
15         print("%s is talking wangwangwnag with %s!"% (self.name, who))
16 
17 d = Dog("L", 11)
18 action = input("action:>>").strip()
19 
20 if hasattr(d, action):
21     func = getattr(d, action)
22     func("Jy")
23     print(d.name)
24     delattr(d, 'name')
25 else:
26     setattr(d, action, eat)
27     func = getattr(d, action)
28     func(d)
29 print(d.name)

 

转载于:https://www.cnblogs.com/fuyuhao/p/7111635.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值