반응형

파이썬, 클래스와 __getattr__()

 

__getattr__() 메서드는 접근 가능한 속성(변수)이 없을 때 동작하며,
                     메서드 존재 여부는 처리하지 못한다.

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

    def __getattr__(self, key): # 속성(변수)이 존재하지 않으면 
        return 'Key not found'   # 오류 메시지 반환

    def get_name(self):
        return self.name

    def get_age(self):
        return self.age    

# 예제 테스트 -----------------------------------------------------
dog = Dog('jindo', 2)

print(dog.name)        # jindo
print(dog.age)          # 2
print(dog.bread)       # Key not found
print(dog.get_name())  # jindo
print(dog.get_age())   # 2
print(dog.get_bread()) # TypeError: 'str' object is not callable

반응형

+ Recent posts