class Person(object): def __init__(self, name): self.name = name def fun1(self): print('fun1')
二. hasattr(一). 用法检查某对象
Object
中是否包某个属性或方法。语法为:hasattr(object,name)
。
person = Person('test')print(hasattr(person, 'name')) # Trueprint(hasattr(person, 'name1')) # Falseprint(hasattr(person, 'fun1')) # True
由于name1
在Person
这个类中不存在会返回False
,而name
存在就会返回True
. 可以使用hasattr
来判断某对象中是否存在某个属性或者某个方法。
(一). 用法获取某个对象
Object
中的属性的属性值。语法为:getattr(object,name,default=None)
。
person1 = Person('test1')print(getattr(person1, 'name')) # test1print(getattr(person1, 'name1', '没有值')) # 没有值# 不建议使用getattr *** 作获取函数的返回值。# <bound method Person.fun1 of <__main__.Person object at 0x7fa7aa29b460>>print(getattr(person1, 'fun1'))
注意:如果使用getattr
来获取不存在的属性时会出现报错。个人建议先使用hasattr
判断你需要的属性存在时再使用getattr
来获取值。
(一). 用法1. 设置属性给某个对象
Object
添加一个属性或方法设置其属性或方法的值。语法为:setattr(object,name,value)
。
person2 = Person('test2')setattr(person2, 'age', 18)print(person2.age) # 18print(person2.name) # test2setattr(person2, 'name', 'new test2')print(person2.name) # new test2
2. 设置方法# 设置不存在的方法。person3 = Person('test3')def test(): return "test 函数"setattr(person3, 'test', test)print(person3.test()) # test 函数# 设置同名的方法,同名方法里的内容会随之替换的。def fun1(): return 'fun1 函数'setattr(person3, 'fun1', fun1)print(person3.fun1()) # fun1 函数
总结 以上是内存溢出为你收集整理的Python之hasattr,getattr与setattr的使用全部内容,希望文章能够帮你解决Python之hasattr,getattr与setattr的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)