Python setattr() 函数用法

2023-09-17 22:29:02

setattr() 函数将指定的 value 参数分配给指定对象的指定属性name(现有或新)。这是getattr()方法的对应物。

setattr()方法等效于 object.attribute = value

语法:

setattr(object, name, value)

parameters:

  1. 对象:需要设置其属性的对象。
  2. 名称:字符串形式的属性名称。
  3. 值:要设置的值。

返回值:

没有。

下面的示例为对象的各种属性设置值。

class student:
    firstName = 'James'
    lastName = 'Bond'
std = student()
print('First Name: ', std.firstName)
print('Last Name: ', std.lastName)
setattr(std,'firstName','Bill')
setattr(std,'lastName','Gates')
print('After setting attributes')
print('First Name: ', std.firstName)
print('Last Name: ', std.lastName)

输出:

First Name: James
Last Name:  Bond
After setting attributes
First Name: Bill
Last Name:  Gates

如果类中不存在指定的属性,则setattr()将为对象或类创建新属性,并为其分配指定的值。下面为类本身分配一个新属性。

class student:
    firstName = 'James'
    lastName = 'Bond'
setattr(student, 'age', 25)
print('After setting attributes')
print('student.age = ', student.age)
s = student()
print('s.age = ', s.age)

输出:

student.age = 25
s.age = 25

请注意,此新属性只能附加到指定的对象。新属性将不适用于新对象。在设置属性值之前使用 hasattr 方法以避免错误。

使用 . 运算符而不是 setattr() 方法来分配值。

class student:
    firstName = 'James'
    lastName = 'Bond'
student.age = 25 # creates a new attribute
s1 = student()
print('s1.age = ', s1.age) 
s1.firstName = 'Steve' # assigns value to existing attribute
s1.lastName = 'Jobs' # assigns value to existing attribute
s2 = student()
print('s2.age = ', s2.age) 

输出:

s1.age = 25
s2.age = 25