说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的 delattr() 函数可以删除指定对象的指定属性。Python 提供了内置函数 setattr()、getattr()、delattr() 三个函数来分别设置、获取、删除对象的属性,让我们对对象属性的操作更新便利。
以下是一些快速示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('Tom', 18)
p.age
# 18
delattr(p, 'age')
p.age
# AttributeError: 'Person' object has no attribute 'age'
也可是一个类:
class Person:
name = "John"
age = 36
country = "Norway"
delattr(Person, 'age')
p = Person()
p.age
# AttributeError: 'Person' object has no attribute 'age'
它的语法如下:
delattr(obj, name, /)
从给定对象中删除命名属性。
参数有:
实参是一个对象和一个字符串。该字符串必须是对象的某个属性。返回 None。
如果对象允许,该函数将删除指定的属性。例如 delattr(x, 'foobar')
等价于 del x.foobar
。
Python 有三个相关的内置函数,它们分别做设置、获取、删除对象的属性:
另外,hasattr(obj, name) 可以获取是否有指定的属性。
一般来说,del 更明确、更高效,但 delattr 允许动态属性删除。例如:
for name in ATTRIBUTES:
delattr(obj, name)
# or
def _cleanup(self, name):
"""Do cleanup for an attribute"""
value = getattr(self, name)
self._pre_cleanup(name, value)
delattr(self, name)
self._post_cleanup(name, value)
更新时间:2022-05-16 18:29:29 标签:python 属性 对象 查询