1、hasattr(object, name)
判断object中是否含有name属性,返回布尔值;这里的name是string类型
class A:
name = 'python'
def test(self):
return 'A()的方法test()'
print(hasattr(A, 'name')) ==>true
print(hasattr(A, 'age')) ==>false
print(hasattr(A, 'test')) ==>true
2、getattr(object, name[, default])
1)获取object中的name属性,如果没有该属性且没传入default值,就会报错
2)如果没有该属性,但是传入了default值,就会返回default的值
3)如果调用方法,由于类下面的是实例方法,所以调用方式是:getattr(B(), 'func')()
class B:
name = 'python'
def test(self):
return 'Hello world'
print(getattr(B, 'name')) ==>python
# print(getattr(B, 'age')) ==>报错AttributeError: type object 'B' has no attribute 'age'
print(getattr(B, 'age', 20)) ==>20
print(getattr(B, 'test')) ==><function B.test at 0x0000019892674620>
print(getattr(B(), 'test')()) ==>Hello world
3、setattr(object, name, value)
给object对象的name属性赋值value,如果对象原本存在给定的属性name,则setattr会更改属性的值为给定的value;如果对象原本不存在属性name,setattr会在对象中创建属性,并赋值为给定的value
class C:
name = 'python'
def test(self):
return '萨瓦迪卡'
setattr(C, 'name', 'java') ==>将name属性赋值为java
print(getattr(C, 'name')) ==>java
print(C.name) ==>java
setattr(C, 'age', 66) ==将不存在的属性age赋值为66
print(getattr(C, 'age')) ==>66
网友评论