我想弄清楚封裝在Python中。我在shell中做了一個簡單的小測試,看看有什麼工作,它不像我期待的那樣工作。我無法實現它的工作。這裏是我的代碼:訪問器和變異器方法(Python)
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不能將福特換成保時捷?謝謝。
實例屬性中的所有下劃線是什麼,例如'自.__ speed'?而且你爲什麼要做所有這些方法呢?你認爲'myCar.set_make(「Porsche」)/ myCar.get_make()'會通過myCar.make ='Porsche''和'myCar.make'提供什麼優勢? – DSM 2013-04-07 20:56:18
從來沒有理由公開這樣的API。有時有getter/setter方法的理由,但是它們應該使用內置的'property'來隱藏。因爲這使得它們像客戶端代碼的普通屬性一樣,所以你應該只使用那些(而不是微不足道的getter/setter),直到你需要邏輯。 – delnan 2013-04-07 20:57:17