2016-08-22 52 views
0
class Restaurant(): 
    def __init__(self, restaurant_name, cuisine_type): 
    """ initializing name and cuisine attributes""" 
     self.name = restaurant_name 
     self.c_type = cuisine_type 
     self.number_served = 0 







class IceCreamStand(Restaurant): 
"""represents aspects of a type of restaurant specifically an IceCreamStand """ 


    def __init__(self, restaurant_name,cuisine_type,flavors): 
     super().__init__(restaurant_name, cuisine_type, 
     flavors) 
     self.flavor = flavors 


    def display_flavors(self): 
     print (flavors) 



##ICECREAM 
dairy_queen = IceCreamStand('dairy queen' , 'ice cream','vanilla' ,'choclate') 
dairy_queen.display_flavors()  

在我的任務中,我正在嘗試使繼承自Restaraunt類的類IceCreamStand。我還想添加一個存儲一系列風味的屬性並調用這個方法。這是我迄今爲止所嘗試的,但我不斷收到一條錯誤消息,說初始需要4個臨時參數,但給出5個?向子類添加任意數量的參數?

+1

'flavors' - >' * flavors'。並且不要將'flavors'傳遞給'super().__ init__'。 –

+0

我打算回答這個問題,但答案確實是一個字符,然後是解釋。你可以從你的代碼中刪除不必要的部分 - 特別是在引發異常之後的所有東西都只是混亂 –

+0

@進行這些編輯時,我得到的名稱風味沒有定義。 –

回答

1

您可以在flavors之前添加*以將所有剩餘的位置參數存入該列表。


其實,我建議你不要使用多個位置參數的風味。相反在傳遞一個list

def __init__(self, restaurant_name, cuisine_type, flavors): 
    ... 

dairy_queen = IceCreamStand('dairy queen' , 'ice cream', ['vanilla' , 'chocolate']) 

如果使用這種模式,您可以在以後添加具有默認值的另一種說法,和現有的代碼將沒有問題的工作:

def __init__(self, restaurant_name, cuisine_type, flavors, organic=False): 
    ...