gpt4 book ai didi

python - Accessor 和 Mutator 方法 (Python)

转载 作者:太空狗 更新时间:2023-10-30 02:47:44 24 4
gpt4 key购买 nike

我正在尝试找出 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'

为什么 myCar.set_make 不将 Ford 更改为 Porche?谢谢。

最佳答案

使用 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!

然而,this use of getters and setters in Python is strongly discouraged .如果您出于任何原因需要类似的东西,请考虑使用 properties .

关于python - Accessor 和 Mutator 方法 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com