我试图弄清楚Python中的封装.我在shell中进行了一个简单的小测试,看看它是如何工作的,它不像我期望的那样工作.我无法让它发挥作用.这是我的代码:
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'
Run Code Online (Sandbox Code Playgroud)
为什么myCar.set_make没有将福特变成保时捷?谢谢.
使用myCar.set_make=('Porche'),您将此成员设置为Car类作为'Porche'字符串,但您不是在调用该方法.
只需删除=即可解决问题:
myCar.set_make('Porche')
myCar.get_make() # Porche
Run Code Online (Sandbox Code Playgroud)
此外,正如@DSM指出的那样,参数中存在错误set_make:
def set_make(self, make):
self.__make = make # carMake is not defined!
Run Code Online (Sandbox Code Playgroud)
但是,强烈建议不要在Python中使用getter和setter.如果由于任何原因需要类似的东西,请考虑使用属性.
| 归档时间: |
|
| 查看次数: |
20525 次 |
| 最近记录: |