Python delattr() 函数



**Python delattr() 函数**用于从对象中删除属性。删除指定的属性后,如果尝试使用类对象调用它,则会引发错误。

那些特定于类对象的属性称为实例属性。类的两个对象可能包含或可能不包含公共属性。

**delattr()** 函数是内置函数之一,不需要导入任何模块。

语法

Python **delattr()** 函数的语法如下所示:

delattr(object, attribute)

参数

Python **delattr()** 函数接受两个参数:

  • **object** - 此参数表示要从中删除属性的对象。

  • **attribute** - 它指示要从指定对象中删除的属性。

返回值

Python **delattr()** 函数不返回值。

delattr() 函数示例

练习以下示例以了解如何在 Python 中使用 **delattr()** 函数

示例:delattr() 函数的基本用法

以下示例显示了 Python delattr() 函数的基本用法。在这里,我们删除指定类的属性,并借助 hasattr() 函数检查属性是否已成功删除。

class NewClass:
   newAttr = "Simply Easy Learning"

print("Before deleting the attribute:")    
print("Is attribute exist:", hasattr(NewClass, 'newAttr')) 
delattr(NewClass, 'newAttr')
print("After deleting the attribute:")
print("Is attribute exist:", hasattr(NewClass, 'newAttr'))

运行上述程序时,会产生以下结果:

Before deleting the attribute:
Is attribute exist: True
After deleting the attribute:
Is attribute exist: False

示例:使用 delattr() 删除类对象的属性

delattr() 函数删除类对象的属性。在此示例中,我们删除构造函数主体中存在的 newAttr 属性。

class NewClass:
   def __init__(self):
      self.newAttr = "Simply Easy Learning"

newObj = NewClass()
print("Before deleting the attribute:") 
print("Is attribute exist:", hasattr(newObj, 'newAttr'))  
delattr(newObj, 'newAttr')
print("After deleting the attribute:") 
print("Is attribute exist:", hasattr(newObj, 'newAttr')) 

以下是上述代码的输出:

Before deleting the attribute:
Is attribute exist: True
After deleting the attribute:
Is attribute exist: False

示例:删除对象期间出错

如果尝试使用 delattr() 函数删除不存在的属性,则代码将抛出 AttributeError,如下面的代码所示。

class NewClass:
   pass

newObj = NewClass()
try:
   delattr(newObj, 'newAttr')
except AttributeError as exp:
   print(exp)   

上述代码的输出如下:

'NewClass' object has no attribute 'newAttr'

示例:使用 delattr() 从模块中删除方法

delattr() 函数还允许我们从 Python 的现有模块中删除方法。在下面的代码中,导入了 math 模块。然后,借助 delattr() 函数,我们删除了 math 模块的sqrt() 方法

import math

print("Before deletion:", hasattr(math, 'sqrt'))  
delattr(math, 'sqrt')
print("After deletion:", hasattr(math, 'sqrt'))

以下是上述代码的输出:

Before deletion: True
After deletion: False
python_built_in_functions.htm
广告