상세 컨텐츠

본문 제목

@property

Python

by techbard 2016. 5. 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


반응형

관련글 더보기

댓글 영역