728x90

이번에는 클래스의 attribution(속성)에 접근하고, 수정하는 데 사용되는 내장함수에 대해 소개하려고 합니다.

 

왜 사용하는가


이 함수들을 통해 객체의 속성을 동적으로 조작할 때 유용하게 사용합니다. 특히 객체 지향 프로그래밍에서 이러한 기능은 유연성을 제공하여 동적으로 수정하는데 매우 큰 도움이 되는 함수들입니다.

 

 

getattr


getattr 함수는 객체의 특정 속성 값을 가져옵니다. 만약 그 속성이 존재하지 않을 경우 선택적으로 기본값(default)을 반환할 수 있습니다.

# 사용법
getattr(object, name[, default])

 

속성이 존재하는 경우

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 30)

# name 속성 가져오기
name = getattr(person, "name")
print(name)  # 출력: Alice

 

속성이 존재하지 않는 경우

# 존재하지 않는 속성에 대해 기본값 반환
height = getattr(person, "height", 160)
print(height)  # 출력: 160 (기본값으로 설정된 값)

# 속성이 추가되지는 않고 기본값으로 설정된 값만 출력

 

setattr


setattr 함수는 객체의 속성을 지정된 값으로 설정합니다. 만약 해당 속성이 존재하지 않으면 새로운 속성을 생성합니다.

setattr(object, name, value)

 

속성이 존재하는 경우

class Person:
    def __init__(self, name):
        self.name = name

person = Person("Bob")

setattr(person, "name", "Kim")
print(person.name) # 출력 : Kim

 

속성이 존재하지 않는 경우

# age 속성 설정
setattr(person, "age", 25)
print(person.age)  # 출력: 25

 

hasattr


hasattr 함수는 객체에 특정 속성이 있는지 없는지를 확인합니다. 있으면 True를, 없으면 False를 반환합니다.

hasattr(object, name)

 

속성이 존재하는 경우

class Person:
    def __init__(self, name):
        self.name = name

person = Person("Carol")

# name 속성이 있는지 확인
print(hasattr(person, "name"))  # 출력: True

 

속성이 존재하지 않는 경우

# age 속성이 있는지 확인
print(hasattr(person, "age"))  # 출력: False

 

delattr


delattr 함수는 객체의 특정 속성을 삭제합닏. 만약 해당 속성이 없으면 AttributeError을 발생시킵니다.

delattr(object, name)

 

속성이 존재하는 경우

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Dave", 40)

# age 속성 삭제
delattr(person, "age")

# age 속성이 삭제되었는지 확인
print(hasattr(person, "age"))  # 출력: False

 

속성이 존재하지 않는 경우

# country 속성 삭제
delattr(person, "country") # 출력 : AttributeError: country

 

객체의 속성을 동적으로 수정, 조회, 추가와 삭제하는 방법에 대해 알아봤습니다.

728x90