차밍이

[Python] getattr() 를 사용해서 간결하게 코드 작성하기, 예시 및 장점 본문

파이썬/기본 문법 정리

[Python] getattr() 를 사용해서 간결하게 코드 작성하기, 예시 및 장점

2022. 2. 25. 09:17
반응형

목차

    getattr() 구문

    getattr(object, attribute, default)

    [매개변수]

    object : 필수. 객체.

    attribute : 필수. 값을 얻을 속성명.

    default : 선택. 속성이 없는 경우 반환할 값.

     

    getattr() 함수의 정의

    gattattr(object, name) 으로 object안의 메소드(name)을 호출한다.

    object 내부의 name이라는 멤버를 반환한다.

    사실 정의만 보면 잘 이해가 되지 않는다.

    조금 더 쉽게 애기하자면 문자열로 객체의 속성값이나 메소드를 사용할 수 있다.

     

    Example

    예제를 보면 쉽게 이해할 수 있다.

    class Animal:
        leg = 4
        size = "Big"
    
        def enemy(self):
            print("컹컹컹!")
    
        def friend(self):
            print("왕왕조왕")
    
    animal = Animal()
    
    getattr(animal, 'enemy')()
    >>> "컹컹컹!"
    
    getattr(animal, 'leg')
    >>> 4

     

    getattr() 활용 및 장점

    장점 1

    .을 사용해서 불러오면 되지만, 잘 사용하면 활용성이 높다.

    str 문자열을 사용해서 불러올 수 있기 때문에

    특정 이름에 따라서 메소드를 가져올 때 활용하면 좋다.

    class Animal:
        leg = 4
        size = "Big"
    
        def enemy(self):
            print("컹컹컹!")
    
        def friend(self):
            print("왕왕조왕")
    
    def greeting(visitor):
        animal = Animal()
        if visitor == "enemy":
            animal.enemy()
        elif visitor == "friend":
            animal.friend()
    
    def greeting2(visitor):
        animal = Animal()
        getattr(animal, visitor)

    함수 greeting과 함수 greeting2를 비교하면 왜 getattr를 사용하는지 알기 쉽다.

    enemyfriend라는 두 개의 함수만 있어서 그렇지 더 많은 선택지와 메소드가 있다면 훨씬 활용도가 높다.

    길고 긴 if 문을 줄이고 간결하게 코드를 작성할 수 있으며,

    알아보기에도 훨씬 좋다.

     

    장점 2

    해당 속성값이 없는 경우 .을 사용하면 오류가 발생되지만,

    getattr를 사용하면 default값을 설정할 수 있어서 오류가 발생되지 않고 잘 진행되게 만들 수 있다.

     

    속성과 관련된 다른 함수들

    delattr()  : 속성 제거

    getattr() : 속성값 가져오기

    hasattr() : 속성 유무 확인

    setattr() : 속성값 설정

    [Python] 객체에 속성 관련 함수들 hasattr, delattr, setattr, getattr

     

    반응형

    관련된 글 보기

    Comments