파이썬 속성 값을 숨기기 위해서 사용하는 setter, getter를 파이썬 프로퍼티를 이용하여 간단하게 구현할 수 있다
결론부터 말하자면, getter에는 @property를 붙이고, setter에는 @{속성이름}.setter 를 붙인다.
@{속성이름}.deleter를 사용하여 속성을 제거하는데 사용할 수도 있다.
<기본 코드>
class Person:
def __init__(self):
self.__age = 0
def get_age(self): # getter
return self.__age
def set_age(self, value): # setter
self.__age = value
james = Person()
james.set_age(20)
print(james.get_age())
<프로퍼티를 사용한 코드>
class Person:
def __init__(self, first_name, last_name):
self.__age = 0
@property
def age(self):
return self._age;
@age.setter
def age(self, value):
self._age = value;
@age.deleter
def age(self):
print("Delete age property")
del.self._age
@property
def full_name();
return self.first_name + " " + self.last.name
John = Person("John", "Doe", 20)
John.age = 20;
print(John.age)
>>> 20;
print(John.full_name)
>>>'John.Doe'
del John.age
print(John.age) # Error
- 함수로 표현되었지만, 함수이름(age)를 Person클래스 속성으로 사용되는 것과 동일하다
<다른 예시>
- .get_name()을 사용하지 않고, .get_name을 사용한다.
class Student:
def __init__(self, first_name):
self.first_name = first_name
# define getter method
@property
def get_name(self):
return self.first_name
# create a new Student object
student = Student("Monica")
# access the first name using data property
print(student.first_name) # Monica
# access the first name using getter property
print(student.get_name) # Monica
※ 비공개 속성, 메소드 사용하기
결론: 비공개 속성, 메소드를 사용하기 위해서는 앞에 작대기 두개를 붙인다
ex)
self.__wallet
def __greeting(self):
https://dojang.io/mod/page/view.php?id=2374
https://dojang.io/mod/page/view.php?id=2476
https://realpython.com/python-property/
반응형
'프로그래밍 언어 > python' 카테고리의 다른 글
self의 의미 (0) | 2023.03.27 |
---|---|
Python에서 Call By Reference 구현하는 법 (0) | 2023.03.13 |
Data Classes (0) | 2022.12.11 |
[OS] python 과 실행파일 (0) | 2021.04.09 |
경로 유틸리티 (0) | 2021.02.07 |