파이썬 @property

.·2021년 4월 9일
0
post-custom-banner

파이썬의 @property를 살펴보기전에 Get, Set Method 를 살펴본다.

접근지정자(Access Modifier)

class AccessModifier:
	def __init(self):
    	pass
       
    def public(self):
    	print("Call public()")
    
    def _protected(self):
    	print("Call _protected()")
        
    def __private(self):
    	print("Call __pivate()")

if __name__ == "__main__":
	access = AccessModifier()
    access.public()
    access._protected()
    access.__private()

실행결과

Call public()
Call _protected()
Traceback (most recent call last):
	File "C:\study\property.py", line 18, in <module>
    access.__private()
AttributeError : 'AccessModifie' object has no attribute '__private'

이처럼 (언더스코어)_를 이용해서 접근제어자인 protected와 private를 표현할 수 있다.

하지만 구글 파이썬 가이드에서는
(언더스코어)__는 private과 같은 효과는 낼 순 있지만, private은 아니기 때문에 삼가해돌라고 말한다.


Get, Set Method

보통 다른 언어에서는 private 접근지정자를 사용하면,
그 값을 get을 통해 가져오고 set을 통해 지정하게 된다.

파이썬에서 get, set method를 표현하면

class AccessModifier2:
	def __init(self):
		self.__color = "red"
    
    def getColor(self):
    	return self._color
    
    def setColor(self,color):
    	self.__color = color
        
if __name__ == "__main__":
	access2 = AccessModifier2()
    
    print(access2.getColor())
    access2.setColor("black")
    print(access2.getColor())

결과

red
black

이처럼 Get , Set 매소드를 통해 값을 가져오거나 설정할 수 있다.


@property

다른 언어에서는 get, set 메소드를 사용하지만, 파이썬은 이렇게 사용하지 않는다.
파이썬은 @property 데코레이터를 통해 Get, Set 메소드를 표현한다.

코드로 보면 한번에 이해가 가능하다.

class AccessModifier3:
	def __init(self):
    	self.color = "red"
    
    @property
    def color(self):
    	return self.__color
        
    @color.setter
    def color(self,color)
    	self.__color = color
        
 if __name__ == "__main__":
 	access3 = AccessModifier3()
    
    print(access3.color)
    access3.color = "Blue"
    print(access3.color)

결과

red
Blue

마지막으로 정리하자면

Get 메소드를 표현 할때는 @property

Set 메소드를 표현 할 때는 @method_name.setter

profile
.
post-custom-banner

0개의 댓글