反射

用途:两个人工作,互不影响。实现可插拔设计。

from ftp_wang import FtpClient
f1=FtpClient('你好')

if hasattr(f1,'lianjie'):
    func=getattr(f1,'lianjie')
    func()
else:
    print("编写其他程序")
1 class FtpClient():
2     def __init__(self,name):
3         self.name=name
4         print('调用类')
class BlackMedium:
    feture='Igly'
    def __init__(self,name,addr):
        self.name=name
        self.addr=addr
    def sell_hourse(self):
        print('[%s] 正在卖房子,傻逼才买',self.name)
    def rent_house(self):
        print('[%s] 正在租房子,傻逼才租'%self.name)

b1=BlackMedium('万成置地','天露园')
#检测b1.name在没在b1.__dic__['name']
print(b1.__dict__)
print(hasattr(b1,'name'))
print(hasattr(b1,'rent_house'))
#检测b1能不能调用到name,rent_house
print(getattr(b1,'name'))
print(getattr(b1,'rent_house'))
func=getattr(b1,'rent_house','没有这个属性')#没有报错。
func=getattr(b1,'rent_hous1','没有这个属性')#没有报错。
print(func)
delattr(b1,'name')
#setattr设置,对象设置。
setattr(b1,'sb',True)
setattr(b1,'name','ming')
print(b1.__dict__)
delattr(b1,'sb')
print(b1.__dict__)

#添加函数
setattr(b1,'func',lambda x:x+1)
print(b1.__dict__)
print(b1.func)
print(b1.func(10))

setattr(b1,'func1',lambda self:self+1)
print(b1.__dict__)
print(b1.func)
print(b1.func(10))
print(b1.func1(b1))

 

 

你可能感兴趣的:(反射)