怎么判断 Python 对象是否包含某个属性

2025-01-31 09:54:08
推荐回答(1个)
回答1:

顶级函数hasattr可以查看对象是否包含某某属性,这里的属性包括数据属性和方法。getattr可以获取属性。

如下举例说明。

a=[1,2,3]
print('列表有count属性:%s'%hasattr(a,'count'))
print('列表有append属性:%s'%hasattr(a,'append'))
print('列表有shift属性:%s'%hasattr(a,'shift'))
print('列表的count属性是方法:%s'%hasattr(getattr(a,'count'),'__call__'))
print('列表的append属性是方法:%s'%hasattr(getattr(a,'append'),'__call__'))
class myclass():
    def __init__(self):
        self.valattr=3
    def method(self):
        pass
mc=myclass()
print('myclass有valattr属性:%s'%hasattr(mc,'valattr'))
print('myclass有method属性:%s'%hasattr(mc,'method'))
print('myclass的valattr属性是方法:%s'%hasattr(getattr(mc,'valattr'),'__call__'))
print('myclass的method属性是方法:%s'%hasattr(getattr(mc,'method'),'__call__'))