從我讀取代碼的方式來看,它看起來像是在試圖讓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'
希望幫助!
請編輯您的問題,以表明其實際存在問題。正如猜測你的縮進看起來不正確。 – ajshort
歡迎使用堆棧溢出。我通過使用領先的> –