차밍이

[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