상위 목록: 하위 목록: 작성 날짜: 읽는 데 10 분 소요

속성(Property)

속성(Property)은 클래스에서 멤버의 값을 읽거나 쓸 수 있도록 제공하는 방식입니다.

클래스의 멤버를 직접 호출해 읽거나 변경할 수 있지만, 속성(Property)를 사용하면, 안정성유연성을 향상시킬 수 있습니다.

멤버를 은닉시켜 속성의 직접 접근을 막는다면, 안정성을 향상시킵니다.

멤버를 직접변경하는 방식이 아닌, 속성(Property)를 통해 변경하면 추가적인 작업을 진행할 수 있어 유연성을 향상시킵니다.



Private & Property

class Daeheeyun:
    def __init__(self):
        self.__value = 0.76923

    @property
    def value(self):
        return self.__value


instance = Daeheeyun()
print(instance.value)
결과
0.76923


Private

Python에도 한정자를 구현할 수 있습니다.

변수명 앞에 이중 밑줄(Double Underscore)로 구현할 수 있습니다.

한정자접근 한정자라고도 부르며, 접근 수준을 제한하는 역할을 합니다.

대표적으로 public 형식과, private 형식이 있습니다.

public은 부모 클래스, 자식 클래스에서 모두 접근 가능한 방식입니다.

private은 부모 클래스에서만 접근이 가능하며, 자식 클래스에서는 접근이 불가능합니다.

간단히 말해, public은 어디에서나 접근이 가능하며, private는 내부 클래스에서만 접근이 가능합니다.

만약, print(instance.__value)으로, 외부에서 __value에 접근할 경우, 오류가 발생합니다.

이를 통해, 클래스의 속성값이 허용 가능한 범위에서만 변경이 가능하도록 제어할 수 있습니다.

  • Tip : 단일 밑줄(Single Undersocre)로 정의된 클래스나, 변수는 from <module> import * 형태로 import할 때 불러와지지 않습니다.


Property

속성(Property)은 메서드명 위에 @property를 통해 속성으로 할당할 수 있습니다.

속성으로 할당된 메서드는 하나의 인수(self)만 사용할 수 있습니다.

메서드처럼 구현되었지만, 속성을 호출하는 방식처럼 instance.value로 사용합니다.

@property, value는 기본적으로 속성 값을 반환하는 getter가 됩니다.

  • Tip : @데코레이터(Decorator)를 의미합니다.

  • Tip : instance.value()로 사용할 경우, 오류를 발생시킵니다.



Getter & Setter & Deleter

class Daeheeyun:
    def __init__(self):
        self.__value = 0.76923

    @property
    def value(self):
        pass

    @value.getter
    def value(self):
        print("GET")
        return self.__value

    @value.setter
    def value(self, value):
        print("SET")
        self.__value = value

    @value.deleter
    def value(self):
        print("DEL")
        del self.__value


instance = Daeheeyun()
instance.value = 100
print(instance.value)
del instance.value
결과
SET
GET
100
DEL


Getter

Getter는 속성의 값을 호출할 때 발생합니다.

value.getter를 사용하지 않는다면, @propertyGetter가 됩니다.

속성을 호출햇을 때에도 추가적인 프로세스를 가질 수 있습니다.


Setter

Setter는 속성의 값을 할당할 때 발생합니다.

value.setter를 사용하지 않는다면, 값을 변경할 수 없습니다.

Setter로 할당된 메서드는 두 개의 인수(self, value)만 사용할 수 있습니다.


Deleter

Deleter는 속성의 값을 제거할 때 발생합니다.

value.deleter를 사용하지 않는다면, 값을 제거할 수 없습니다.

댓글 남기기