我正在尝试找出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'
为什么我的 Car.set_make 没有将福特更改为保时捷?谢谢。
With myCar.set_make=('Porche')
,您将此成员设置为 Car 类'Porche'
字符串,但您没有调用该方法。
只需删除=
解决它:
myCar.set_make('Porche')
myCar.get_make() # Porche
此外,正如 @DSM 指出的,以下参数存在错误set_make
:
def set_make(self, make):
self.__make = make # carMake is not defined!
然而,强烈建议不要在 Python 中使用 getter 和 setter https://stackoverflow.com/questions/1554546/when-and-how-to-use-the-builtin-function-property-in-python#1555169。如果您出于任何原因需要类似的东西,请考虑使用特性 http://docs.python.org/2/library/functions.html#property.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)