Документация по Python. Теоретические материалы, и практические задачи

Python delattr

Метод 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)

В целом будет такой же результат как в примере выше. Какой из этих вариантов использовать для удаления атрибута из класса, решать наверное вам самим. За вопросами и ответами, добро пожаловать в комментарии.