点取值取不到的时候触发__getattr__方法
点赋值触发__setattr__方法
hasattr()
class A():
name = 'python'
def func(self):
return 'A()类的方法func()'
hasattr(A, 'name')#类A中有name属性返回True
True
、getattr()、
class A():
name = 'python'
def func(self):
return 'Hello world'
getattr(A, 'age') # 属性age变量不存在则报错
getattr(A, 'age', 20) #如果没有类没有该属性则返回默认值20
20
getattr(A(), 'func')() #如果调用类方法则在后面加()
'Hello world'
setattr()函数的使用
class A():
name = 'python'
def func(self):
return 'Hello world'
setattr(A, 'name', 'java')#如果类本来就有name属性则修改
getattr(A, 'name')
'java'
setattr(A, 'age', 20)#如果类本来没有age属性增加
getattr(A, 'age')
20