#反射(常用于可插拔方式)
1.指程序可以访问。检测和修改它本身状态或行为的一种能力(自省)
四个可以实现的函数
1.判断object中有没有一个name字符串对应的方法或属性
hasattr(object,name) (常用于可插拔方式)(day26)(即调用另一个类方法还没完成,可用 hasattr 进行判断,
与 if 结合,不影响其工作,后来也不用改代码)
class BlackMedium:
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=BlackMedium('那黄沫路','Beijing')
print(hasattr(b1,'sell_hourse')) # True
print(getattr(b1,'rent_hourse'))
#<bound method BlackMedium.rent_hourse of <__main__.BlackMedium object at 0x0044E870>>
#没设第三个参数, 没有rent_hourse会报错
print(getattr(b1,'dd','没有这个参数')) #没有这个参数
setattr(b1,'sb','false') #相当于 b1.sb=false
print(b1.__dict__) #{'name': '那黄沫路', 'addr': 'Beijing', 'sb': 'false'}
delattr(b1,'sb') #相当于 del b1.sb
print(b1.__dict__) #{'name': '那黄沫路', 'addr': 'Beijing'}