파이썬에서 캡슐화를 파악하려고합니다. 나는 셸에서 간단한 테스트를 수행하여 어떻게 작동하는지보고 있었고 예상했던 것처럼 작동하지 않았습니다. 그리고 나는 그것을 작동시킬 수 없다.액세서 및 뮤 테이타 메서드 (파이썬)
class Car:
def __init__(self, carMake, yrMod):
self.__make = carMake
self.__yearModel = yrMod
self.__speed = 0
#Mutator Methods
def set_make(self, make):
self.__make = carMake
def set_model(self, yrMod):
self.__yearModel = yrMod
#def set_speed(self, speed):
#self.__speed = speed
#Accessor Methods
def get_make(self):
return self.__make
def get_yearModel(self):
return self.__yearModel
def get_speed(self):
return self.__speed
myCar=Car('Ford', 1968)
myCar2=Car('Nissan', 2012)
myCar.get_make()
'Ford'
myCar.set_make=('Porche')
myCar.get_make()
'Ford'
왜 포르쉐에 포드를 변경 myCar.set_make하지 않습니다 여기 내 코드는? 고맙습니다.
인스 턴 스 속성의 모든 밑줄은 무엇입니까? '자기 .__ 속도'? 그리고 왜이 모든 방법을 어쨌든 만들고 있습니까? 'myCar.set_make ("Porsche")/myCar.get_make()'는'myCar.make = 'Porsche'와'myCar.make'를 통해 어떤 이점이 있다고 생각합니까? – DSM
이와 같은 API를 노출 할 이유는 없습니다. 때로는 getter/setter 메소드가있는 이유가 있지만 내장 된 '속성'을 사용하여 숨겨야합니다. 그리고 클라이언트 코드의 관점에서 보았을 때 일반 속성처럼 보이게하기 때문에 논리가 필요할 때까지 사용하면됩니다 (간단한 getter/setter가 아닌). – delnan