geekdoc-python-zh/docs/askpython/python-delattr-function.md

3.3 KiB
Raw Permalink Blame History

如何使用 Python delattr()函数?

原文:https://www.askpython.com/python/built-in-methods/python-delattr-function

嘿,读者们!在本文中,我们将重点介绍 Python delattr()函数


Python delattr()方法入门

面向对象编程中,Class 是一个实体,它包装了属性行为,并用Object来表示它们。

一个的特性确实存在于 Python 中,因为它是一种面向对象的语言。在创建属性和定义行为时,我们可能会遇到想要删除 Python 类的某些属性的情况。这就是 Python delattr()出现的原因。

The delattr() function用于删除与特定类相关的属性

语法:

delattr(object, attribute)

举例:

class Info:
  name = "AskPython"
  lang = "Python"
  site = "Google"
obj = Info()
print(obj.name)
delattr(Info, 'lang')

输出:

AskPython

在上面的例子中,我们创建了一个具有如下属性的类信息:

  • name = AskPython
  • lang = Python
  • 网站=谷歌

此外,我们使用下面的命令创建了一个类别为'信息对象:

obj = <classname>()

创建对象后,我们使用 delattr()函数删除了属性–'lang'。


delattr()的错误和异常

删除一个属性后,如果我们试图访问那个特定的对象,编译器将抛出AttributeError

举例:

class Info:
  name = "AskPython"
  lang = "Python"
  site = "Google"
obj = Info()
delattr(Info, 'lang')
print(obj.lang)

输出:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-699f50a1e7c7> in <module>
      5 obj = Info()
      6 delattr(Info, 'lang')
----> 7 print(obj.lang)

AttributeError: 'Info' object has no attribute 'lang'


使用 Python del 运算符删除属性

Python del operator也可以用来直接删除类的属性,不需要通过对象访问。

语法:

del Class-name.attribute-name

举例:

class Info:
  name = "AskPython"
  lang = "Python"
  site = "Google"
print("Attribute before deletion:\n",Info.lang)
del Info.lang
print("Attribute after deletion:\n",Info.lang)

输出:

Attribute before deletion:
 Python
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-16-9d8ed21690ff> in <module>
      5 print("Attribute before deletion:\n",Info.lang)
      6 del Info.lang
----> 7 print("Attribute after deletion:\n",Info.lang)

AttributeError: type object 'Info' has no attribute 'lang'


Python delattr()方法 v/s Python del 运算符

在动态删除属性方面Python delattr()方法比 Python del 运算符更有效。

另一方面,与 Python delattr()方法相比Python del 运算符执行操作的速度更快。


结论

因此,在本文中,我们已经通过 Python delattr()方法和 del 运算符了解了属性的删除。


参考