Python delattr() 函数用法

2023-09-17 22:27:32

如果对象允许,delattr() 方法将从对象中删除命名属性。

语法:

delattr(object, name)

参数:

  1. 对象:要从中删除属性的对象。
  2. 名称
  3. :要作为字符串删除的属性名称。

返回值:

没有。

下面的示例从给定对象中删除属性。

class student:
    name = 'John'
    age = 25
print(dir(student))
delattr(student, 'age')
print("After the delattr() method is called:")
print(dir(student))

输出:

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__',
'__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', 
'__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name']
After the delattr() method is called:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__',
'__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 
'name']

上面,dir(student)输出包含列表中的age,但是在调用delattr(student, 'age')后,它会删除age属性,因此列表中不存在。

或者,可以使用 del 关键字而不是 delattr() 方法来删除属性。

class student:
    name = 'John'
    age = 25
del student.age
print(dir(student))

输出:

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__',
'__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 
'name']