Python delattr() 함수란?
delattr()는 Python의 내장 함수로, 객체가 허용하는 경우 해당 객체에서 지정된 속성(attribute)을 삭제하는 역할을 합니다. 클래스나 인스턴스에서 더 이상 필요하지 않은 속성을 동적으로 제거할 때 유용하게 사용됩니다.
문법(Syntax)
delattr() 함수의 기본 문법은 다음과 같습니다.
delattr(object, name)
매개변수
delattr() 메서드는 두 개의 매개변수를 받습니다.
- object: 속성을 삭제할 대상 객체 또는 클래스
- name: 삭제할 속성의 이름(문자열 형태)
반환값
delattr() 함수는 별도의 값을 반환하지 않습니다(None 반환). 단순히 객체가 허용하는 경우 해당 속성만 제거합니다.
참고: delattr(object, 'name')은 del object.name 구문과 동일한 동작을 수행합니다. 다만 속성 이름을 문자열 변수로 전달해야 하는 상황에서는 delattr()가 더 편리합니다.예제
아래 예제는 Coordinate 클래스에서 z 속성을 삭제하는 과정을 보여줍니다.
class Coordinate:
x = 12
y = -7
z = 0
point1 = Coordinate()
print('x = ', point1.x)
print('y = ', point1.y)
print('z = ', point1.z)
delattr(Coordinate, 'z')
print('--After deleting z attribute--')
print('x = ', point1.x)
print('y = ', point1.y)
# Raises Error
print('z = ', point1.z)실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
x = 12
y = -7
z = 0
--After deleting z attribute--
x = 12
y = -7
Traceback (most recent call last):
File "C:/Users/~.py", line 28, in <module>
print('z = ', point1.z)
AttributeError: 'Coordinate' object has no attribute 'z'결과 분석
코드 실행 흐름을 살펴보면 다음과 같습니다.
- 처음에는 x, y, z 세 속성 모두 정상적으로 출력됩니다.
delattr(Coordinate, 'z')를 호출하면 클래스에서 z 속성이 삭제됩니다.- 속성 삭제 후 x와 y는 여전히 정상적으로 접근 가능합니다.
- 그러나 이미 삭제된 z에 접근하려 하면 AttributeError가 발생하며 프로그램이 중단됩니다.
활용 팁
속성을 삭제하기 전에 해당 속성이 존재하는지 확인하고 싶다면 hasattr() 함수를 함께 사용하는 것이 안전합니다.
if hasattr(Coordinate, 'z'):
delattr(Coordinate, 'z')이렇게 하면 존재하지 않는 속성을 삭제하려 할 때 발생하는 AttributeError를 사전에 방지할 수 있습니다.