反射讲解

#

反射

1、hasattr(obj,name_str)判断obj里面是否有对应懂得name_str字符串方法

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

3、getattr(obj,y,z) 重新设置属性obj.y=z

4、delattr # 指定删除

def bulk(self):
print("%s is yelling!"%self.name)

class Dog(object):
def __init__(self,name):
 self.name=name

def eat(self,food):
    print("%s eat the milk and pick!%s eat %s"%(self.name,self.name,food))

d=Dog("ALEX")
choise=input(">>:").strip()
#print(hasattr(d,choise)) # 判断d中有没有choise方法!返回True和Flast
#print(getattr(d,choise))#获取并调用
if hasattr(d,choise):
delattr(d,choise) # 删除东西
#func=getattr(d,choise) # 获取并调用
#``func("孙悟空")
#setattr(d,choise,"王八蛋") #重新给self。name赋值
#print(d.name)

else:
#setattr(d,choise,bulk) # 动态的装一个方法到类里 d.choise=bulk
#func=getattr(d,choise)
#func(d)
setattr(d, choise,"oxoxox") #添加一个属性
func = getattr(d, choise)
print("%s:%s"%(choise,func))

#setattr(d,choise,22)
#print(getattr(d,choise))
#print(d.name)

转载于:https://blog.51cto.com/12992048/2298956

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值