KalelPark's LAB

[ CLEAN CODE ] Clean Python, Property 활용하기 본문

Python/CLEAN CODE

[ CLEAN CODE ] Clean Python, Property 활용하기

kalelpark 2023. 1. 1. 20:37

Property

      -  파이썬에는 내장함수로 property()와  데코레이터인 @Property가 존재합니다.

 

property()를 사용하면서 필드명을 사용하는 것처럼 메서드를 호출할 수 있습니다.

class Person:
    def __init__(self, first_name, last_name, age):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
    
    def get_age(self):
        return self._age

    def set_age(self, age):
        if age < 0:
            raise ValueError("Invalid age")
        self._age = age

    age = property(get_age, set_age)

property() 함수의 첫 번째 인자로 getter 메서드를 두 번째 인자로 setter 메서드를 넘겨주면,

age라는 필드명을 활용해서 데이터에 접근 가능합니다.

 

클래스를 사용하는 측면에서는 일반 필드에 접근하는 것처럼 보이지만, 내부적으로 getter와 setter메서드가 호출됩니다.

 

@property()데코레이터를 사용하면, 코드를 더 간결하고, 읽기 편하게 작성할 수 있습니다.

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

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, age):
        if age < 0:
            raise ValueError("Invalid age")
        self._age = age

 

 

기존의 getter 메서드에서는 @property 데코레이터를 선언하고, setter 메서드의 경우에는 @<필드명>.setter 데코레이터를 선언하고, 메서드 이름으로부터 set_을 삭제합니다.

 

참고

https://www.daleseo.com/python-property/

 

[파이썬] property 사용법 (함수/데코레이터)

Engineering Blog by Dale Seo

www.daleseo.com

 

Comments