delattr()
Функция delattr() удаляет атрибут у объекта. Это аналог
оператора del obj.name, но имя атрибута передаётся строкой —
полезно, когда имя становится известным только во время выполнения.
Сигнатура
delattr(object, name)
Параметры:
object— объект, у которого удаляется атрибут.name— строка с именем атрибута.
Возвращает: None. Если атрибута нет — AttributeError.
Примеры
Удаление атрибута:
class Robot:
def __init__(self):
self.name = "Phobo"
self.battery = 100
r = Robot()
delattr(r, "battery")
print(hasattr(r, "name"))
print(hasattr(r, "battery"))
True
False
Эквивалент с оператором del:
class Box:
def __init__(self):
self.value = 10
b = Box()
del b.value
print(hasattr(b, "value"))
False
Динамическое имя атрибута:
class Config:
host = "localhost"
port = 8080
debug = True
c = Config()
for attr in ["debug", "port"]:
delattr(c, attr)
print([a for a in dir(c) if not a.startswith("_")])
['host']
Обработка ошибки при отсутствии атрибута:
class A:
x = 1
a = A()
try:
delattr(a, "y")
except AttributeError as e:
print("нет атрибута:", e)
нет атрибута: y
Сравнение с setattr / getattr:
class User:
pass
u = User()
setattr(u, "email", "a@alashed.kz")
print(getattr(u, "email"))
delattr(u, "email")
print(getattr(u, "email", "не задан"))
a@alashed.kz
не задан
См. также
Примечание
Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.