2017-02-25 10 views
0

アイスクリームスタンドのフレーバーを返すメソッドを呼び出そうとしています。以下は私のコードです:Pythonの継承とメソッドの呼び出し

class Restaurant: 
    """Defining Restaurants""" 
    def __init__ (self, restaurant_name, cuisine_type): 

     """Initializing a restaurant name and cuisine type""" 
     self.restaurant_name = restaurant_name 
     self.cuisine_type = cuisine_type 
     self.number_served = 545 

    def describe_restaurant(self): 
     """Describing the restaurant""" 
     print(self.restaurant_name.title() + " serves " + self.cuisine_type.title() + ".") 

    def open_restaurant(self): 
     """Stating the restaurant is open""" 
     print(self.restaurant_name.title() + " is now open.") 

    def set_number_served(self): 
     """Method that sets the number served""" 
     set_number_served = 430 
     print("This restaurant has served " + str(set_number_served) + " customers.") 

    def restaurant(self): 
     """Statement showing how many customers have been served""" 
     print("This restaurant has served " + str(self.number_served) + " customers.") 

    def increment_number_served(self): 
     self.number_served += 432 
     print("This restaurant has served " + str(self.number_served) + " customers.") 

class IceCreamStand(Restaurant): 
    """Represents an ice cream stand""" 
    def __init__(self, restaurant_name, cuisine_type, flavors): 
     self.restaurant_name = restaurant_name 
     self.cuisine_type = cuisine_type 
     self.flavors = flavors 

    def flavors(self): 
     """Flavors of ice cream""" 
     flavors = ['chocolate', 'vanilla', 'strawberry'] 
     for flavor in flavors: 
      return flavor.title() 

my_IceCreamStand = IceCreamStand('West Ice Cream', 'Dessert', 'multiple') 
my_IceCreamStand.flavors() 

私が受けていますエラーは次のとおりです。

Traceback (most recent call last): 
    File "ice_Cream_Stand.py", line 45, in <module> 
    my_IceCreamStand.flavors() 

任意のアイデア?

はTypeError:「STR」オブジェクト

答えて

0

はい、あなたは同じ名前の属性を使用してメソッドをシャドウ呼び出すことはできません。では、あなたの__init__あなたがself.flavors = flavorsを行うと、あなたはだから今

my_IceCreamStand = IceCreamStand('West Ice Cream', 'Dessert', 'multiple') 

でそれを初期化し、インスタンスがself.flavors使用するすべての時間は、それが文字列である、'multiple'を返します。 ()を使用して関数のように呼び出そうとすると、エラーが示すように、文字列は呼び出し可能ではありません。

属性またはメソッドの名前を変更しますが、名前は同じであってはなりません。

+0

恐ろしく、それでした!ありがとう、トン! –

関連する問題