Problems with inheritance with classes - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Problems with inheritance with classes (/thread-19152.html) |
Problems with inheritance with classes - internetguy - Jun-15-2019 I'm getting a type error. I want to write a subclass and add an attribute to it, then write a method to display the attribute and call the method. Class Restaurant (): def __init__(self, restaurant_name, cuisine_name): self.restaurant_name = restaurant_name self.cuisine_name = cuisine_name def describe_restaurant (self): print("This is " + self.restaurant name.title()) print(self.cuisine_name.title() + " is the only cuisine right now") def open_restaurant(self): print(self.restaurant_name.title() + " is open for business ") class IceCreamStand(Restaurant): def __init__(self, restaurant_name, cuisine_name): super().__init__(restaurant_name, cuisine_name) self.flavors = flavors def print_flavors(self): print(self.flavors) IceCream = IceCreamStand('dominos', 'pizza', 'BBQ') IceCream.IceCreamStand.print_flavors()So basically, I have a class Restaurant and I have a subclass IceCreamStand and I added an attribute flavors to the subclass and a method print_flavors to display the flavors, then I have to call the method. The specific error I get is TypeError: __init__ takes 3 positional arguments but 4 were given. Any help would be appreciated. RE: Problems with inheritance with classes - ThomasL - Jun-15-2019 2 parameters defined, 3 arguments given class IceCreamStand(Restaurant): def __init__(self, restaurant_name, cuisine_name): super().__init__(restaurant_name, cuisine_name) self.flavors = flavors IceCream = IceCreamStand('dominos', 'pizza', 'BBQ') RE: Problems with inheritance with classes - langley - Jul-04-2019 Hey. I have a similar program and it works perfectly for me. Hope it helps. class Restaurant(): """Information storage for restaurants""" def __init__(self,name,cuisine): self.name=name self.cuisine=cuisine self.served=0 def describe_rest(self): first=self.cuisine[0:1] if first.lower()=='a' or first.lower()=='i' or first.lower() =='o' or first.lower()=='u' or first.lower()=='e': print(self.name.title() + " " + "is an " + self.cuisine.title()+ " " + "restaurant") else: print(self.name.title() + " " + "is a " + self.cuisine.title()+ " " + "restaurant") def rest_open(self): print(self.name.title()+ " " + "is open now") def number_served(self): """Prints the number of customers serves by the restaurant""" number=str(self.served) + " " + "customers have been served" return number def set_number_served(self,people): """Allows to set the number of people served""" self.people=people print(str(self.people)+ " " + "people have been served") def increment_served_people(self,people_served): """Adjusts the number of people served by providing option to increment""" print("Number of customers served is " + " " + str(self.people+people_served)) class IceCream_Stand(Restaurant): def __init__(self,name,cuisine): super().__init__(name,cuisine) def flavours(self): self.flavours=[] self.flavours.append('chocolate') self.flavours.append('strawberry') self.flavours.append('rocky road') self.flavours.append('cotton candy') print("Flavours availale today are:") for flavour in self.flavours: print("\n\t" + flavour.title()) my_icecream=IceCream_Stand('pinkertons' , 'desserts') my_icecream.describe_rest() my_icecream.flavours() RE: Problems with inheritance with classes - metulburr - Jul-04-2019 This drives me nuts to see in python Quote:print(self.name.title() + " " + "is an " + self.cuisine.title()+ " " + "restaurant") As it should be print(f'{self.name.title()} is an {self.cuisine.title()} restaurant')or at the very worst if they dont have python3.6+ print('{} is an {} restaurant'.format(self.name.title(), self.cuisine.title())) |