티스토리 뷰

Python

@property

techbard 2016.05.11 14:08

# 멤버 변수와 같은 이름의 getter, setter 함수를 정의해서

# 외부에서는 멤버를 직접 액세스하는 것처럼 보이지만

# 사실상 동일 이름의 함수를 호출해서 액세스 가능한 인터페이스를 제공하는 것

# 메소드로 별도 구현할 수 있으나 코드가 복잡해질 우려가 있음


class Prop():

@property

def value(self):

return self._value


@value.setter

def value(self, value):

self._value = value


@value.deleter

def value(self):

del self._value


p1 = Prop()

p1.value = 1

print(p1.value)


# 결과

1


# property를 사용하는 두 번째 방법

# legacy 코드가 있을때 크게 바꾸지 않고 구현하는 방법이지만

# OOP 개념에는 맞지 않음 - 멤버에 접근하는 방법이 두 가지


class Prop2():


def __init__(self):

self._val = None


def get_val(self):

return self._val


def set_val(self, val):

self._val = val


value = property(get_val, set_val)


p2 = Prop2()


p2.value = 1

print(p2.get_val())


p2.set_val(2)

print(p2.value)


# 결과

1

2


댓글
댓글쓰기 폼
공지사항
Total
409,801
Today
19
Yesterday
27
«   2019/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함