Метод Python delattr — удаляет атрибут из объекта, в том случае если сам объект позволяет это сделать. У метода delattr() есть два параметра:
- object — непосредственно сам объект, из которого должен быть удален атрибут
- name — строка, которая является именем атрибута, который подлежит удалению из object
Метод delattr() — не возвращает никаких значений. Он удаляет атрибут лишь в том случае, если объект позволяет это сделать. Ниже приведен хороший пример, который отлично демонстрирует работу данного метода.
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
print('x = ',point1.x)
print('y = ',point1.y)
print('z = ',point1.z)
delattr(Coordinate, 'z')
print('--после удаления атрибута z--')
print('x = ',point1.x)
print('y = ',point1.y)
# Вызывает ошибку
print('z = ',point1.z)
x = 10
y = -5
z = 0
--после удаление атрибута z--
x = 10
y = -5
Traceback (most recent call last):
File "python", line 19, in
AttributeError: 'Coordinate' object has no attribute 'z'
В данном случае, все предельно ясно. Удаляется атрибут z из класса Coordinate() с помощью метода delattr(Coordinate, ‘z’). Ниже рассмотрим другой вариант удаления атрибута из класса, с помощью оператора del.
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
print('x = ',point1.x)
print('y = ',point1.y)
print('z = ',point1.z)
# Удаляется атрибут z
del Coordinate.z
print('--После удаления атрибута z--')
print('x = ',point1.x)
print('y = ',point1.y)
# Вызывается ошибка
print('z = ',point1.z)
В целом будет такой же результат как в примере выше. Какой из этих вариантов использовать для удаления атрибута из класса, решать наверное вам самим. За вопросами и ответами, добро пожаловать в комментарии.