如何使用Python的getattr和setattr函数来访问对象属性
Python中的getattr函数和setattr函数是Python内置的两个函数,用于访问一个对象的属性。getattr函数用于获取一个对象的属性值,而setattr函数用于设置一个对象的属性值。这两个函数都是很实用的Python内置函数,并且在编写Python程序时经常会用到。
getattr函数的用法
getattr函数的用法如下:
getattr(object, name[, default])
其中,object为要获取属性的对象,name为要获取的属性名,default为可选参数,默认值为None,当指定属性不存在时,返回default。
例如:
class Person:
name = "Tom"
age = 18
p = Person()
# 获取对象的属性值
print(getattr(p, 'name')) # 输出:Tom
# 获取对象的属性值,指定默认值
print(getattr(p, 'gender', 'unknown')) # 输出:unknown
在上面的代码中,定义了一个Person类,创建了一个Person对象p。然后通过getattr函数获取了对象p的属性name的值,并指定了默认值。由于对象p有名为name的属性,所以输出Tom。而对于gender属性,p对象没有定义,所以返回指定的默认值unknown。
setattr函数的用法
setattr函数的用法如下:
setattr(object, name, value)
其中,object为要设置属性的对象,name为要设置的属性名,value为要设置的属性值。
例如:
class Person:
name = "Tom"
age = 18
p = Person()
# 设置对象属性的值
setattr(p, 'age', 20)
# 输出对象的属性值
print(p.age) # 输出:20
在上面的代码中,定义了一个Person类,创建了一个Person对象p。然后通过setattr函数设置了对象p的属性age的值为20。最后输出对象p的属性age的值,发现已经被设置为20了。
getattr和setattr综合使用
在实际应用中,getattr函数和setattr函数经常会一起使用。例如:
class Person:
name = "Tom"
age = 18
p = Person()
# 获取对象的属性值
print(getattr(p, 'name')) # 输出:Tom
# 设置对象属性的值
setattr(p, 'age', 20)
# 输出对象的属性值
print(p.age) # 输出:20
在上面的代码中,定义了一个Person类,创建了一个Person对象p。首先通过getattr函数获取了对象p的属性name的值。然后通过setattr函数设置了对象p的属性age的值为20。最后输出对象p的属性age的值,发现已经被设置为20了。
总之,getattr函数和setattr函数是Python内置的两个函数,可以方便地访问对象的属性。在编写Python程序时,这两个函数被广泛应用,尤其是在一些大型项目中,它们的作用更加突出。
