파이썬 데코레이터

이상민·2023년 3월 14일
0
post-custom-banner

decorator

데코레이터는 말 그대로 함수를 꾸며주는 역할을한다, 데코레이터를 사용하면 함수를 수정하지 않고 특정 동작을 수정하거나 작동 방식을 바꿀 수 있다. 아래에는 코드에서 흔히 볼 수 있는 데코레이터들의 예시를 설명한다.

decorator 예시

@property

  • @property를 사용하면 아래와 같이 클래스 외부에서 함수를 호출할 때 괄호를 생략하고 method의 이름만으로 호출할 수 있다.
class BMI:
    def __init__(self,weight,height):
        self._weight = weight 
        self._height = height
    @property
    def height(self):
        return self._height

bmi = BMI(80,180)
print(bmi.height) #180
  • 인스턴스 변수를 만들지 않고 값만 반환하고 싶을때 사용
class BMI:
    def __init__(self,weight,height):
        self._weight = weight
        self._height = height

    @property
    def bmi(self):
        return self.weight/(self.height/100)**2
I = BMI(180,80)
print(I.bmi) 
  • setter를 사용하면 인스턴스 변수에 대입하듯 사용할 수 있다.
class BMI:
    def __init__(self,weight,height):
        self._weight = weight
        self._height = height
    @property
    def height(self):
        return self._height
    @height.setter #사용하는 방식이 달라서 오류가 안남
    def height(self,h):
    	#h에 음수나 정수가 아닌 값이 들어오면 종료
        assert isinstance(h,int) and h > 0,"잘못된 입력입니다"
        self._height = h
bmi = BMI(80,180)
bmi.height = 100
print(bmi.height)
profile
잘하자
post-custom-banner

0개의 댓글