class A:
def __init__(self):
self.a='b'
def C(self):
print("hello")
getattr函数效果和A().a,A().C一样
getattr 英文意思大概就是 获得属相
a=getattr(A(),'a','default')
print(a)
c=getattr(A(),'C')
print(c)
c()
#b
#<bound method A.C of <__main__.A object at 0x00000139128FC7B8>>
#hello
hastattr 英文意思大概就是 有这个属相 ,所以有这个就会返回True,没有就是False
print(hasattr(A(),'a'))
print(hasattr(A(),'b'))
print(hasattr(A(),'C'))
#True
#False
#True
setattr 为属相赋值,相当于A.a=’bbbb’
setattr(A(),'a','bbb')
delattr 函数用于删除属性。
delattr(x, ‘foobar’) 相等于 del x.foobar。
a1=A()
delattr(a1,'a')
print(hasattr(a1,'a'))
注:使用getattr可以轻松实现工厂模式。
例:一个模块支持html、text、xml等格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出