7_24 day 26 反射 25 min

python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)

class  hei_zhongjie:
feture='ugly'
def __init__(self,name,addr):
self.name=name
self.addr=addr
def sell_hourse(self):
print('%s 正在卖房子,傻逼才买呢'%self.name)

def rent_hourse(self):
print('%s 正在卖房子,傻逼才买呢'%self.name)

b1=hei_zhongjie('黑中介','天上人间')
print(b1.__dict__)

print(hasattr(b1,'name')) #不是查自己属性自己字典 是检测b1能不能调用 这个属性
print(hasattr(b1,'sell_hourse')) #函数属性
print(getattr(b1,'name'))
print(getattr(b1,'rent_hourse'))
f=getattr(b1,'rent_hourse')
f()
print(getattr(b1,'vsvdfdf','没有这个属性')) #没有则报错 ,加上字符串就不会报错就打印这个字符串

#设置属性
#b1.sb=True和下面一样 h
setattr(b1,'sb',True)
setattr(b1,'sb1',True)
print(b1.__dict__)

#删掉属性
#del b1.sb1
delattr(b1,'sb1')
print(b1.__dict__)



黑中介 正在卖房子,傻逼才买呢
没有这个属性
{'name': '黑中介', 'addr': '天上人间', 'sb': True, 'sb1': True}
{'name': '黑中介', 'addr': '天上人间', 'sb': True}








猜你喜欢

转载自www.cnblogs.com/yikedashuyikexiaocao/p/9357933.html