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.