从我阅读您的代码的方式来看,您似乎正在尝试使您的 get_x 方法执行 set_x 方法通常执行的操作。另外,根据您的代码有
if self.color == 1:
print(white)
我认为您想将 1 映射到白色,然后可能将 2 映射到黑色,将 3 映射到蓝色,等等?
我会先处理最后一部分。通常,如果您想将某些内容映射到其他内容(在这种情况下,是数字到颜色),最好使用字典:
color_dict = {1: 'white',
2: 'black',
3: 'etc.',}
然后,你可以通过写来调用(例如)白色
>>>print(color_dict[1])
'white'
现在,在课堂上,我将向您展示两种不同的方法来做(我认为)您想做的事情。
选项 A:老派的 getter/setter:
class Automobile:
def __init__(self, color):
self.color_dict = {1: 'white',
2: 'black',
3: 'etc.',}
self.color = self.color_dict[key]
def get_color(self):
return self.color
def set_color(self, key):
self.color = self.color_dict[color]
那么,您可以从这里调用:
>>>auto = Automobile(1)
>>>print(auto.get_color())
'white'
>>>auto.set_color(2)
>>>auto.print(auto.get_color())
'black'
这会很好用,而且我认为它可以满足您的需求。
python 3 中有一种较新的方法,但它使用了装饰器(稍后您会看到,它们以 '@' 开头,而且它们有点难以理解)
选项 B:基于属性的新型方法
class Automobile:
def __init__(self, color):
self.color_dict = {1: 'white',
2: 'black',
3: 'etc.',}
self.color = color
@property
def color(self):
return self._color
@color.setter
def color(self, key):
self._color = self.color_dict[key]
这里的用法有点不同。开头是一样的:
>>>auto = Automobile(1)
>>>print(auto.color)
'white'
但是,要更改颜色,您可以使用 = 修改属性,而不是使用函数。
>>>auto.color = 2
>>>print(auto.color)
'black'
希望有帮助!