首页 > 编程语言 > 详细

Python之hasattr,getattr与setattr的使用

时间:2021-06-13 19:05:00      阅读:30      评论:0      收藏:0      [点我收藏+]

一. 定义一个类

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‘))  # True
print(hasattr(person, ‘name1‘))  # False
print(hasattr(person, ‘fun1‘))  # True

由于name1Person这个类中不存在会返回False,而name存在就会返回True. 可以使用hasattr来判断某对象中是否存在某个属性或者某个方法。

三. getattr

获取某个对象Object中的属性的属性值。语法为:getattr(object,name,default=None)

(一). 用法

person1 = Person(‘test1‘)
print(getattr(person1, ‘name‘))  # test1
print(getattr(person1, ‘name1‘, ‘没有值‘))  # 没有值

# 不建议使用getattr操作获取函数的返回值。
# <bound method Person.fun1 of <__main__.Person object at 0x7fa7aa29b460>>
print(getattr(person1, ‘fun1‘)) 

注意:如果使用getattr来获取不存在的属性时会出现报错。个人建议先使用hasattr判断你需要的属性存在时再使用getattr来获取值。

四. setattr

给某个对象Object添加一个属性或方法设置其属性或方法的值。语法为:setattr(object,name,value)

(一). 用法

1. 设置属性

person2 = Person(‘test2‘)
setattr(person2, ‘age‘, 18)
print(person2.age)  # 18
print(person2.name)  # test2
setattr(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的使用

原文:https://www.cnblogs.com/zhenzi0322/p/14880782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!