出现了 如下的报错,主要是那一句takes 3 positional arguments but 4 were given

python 关于继承的实验

经过排查,在写继承类时,写的是 super().__init__(self, 参数,参数) 

class IceCream(Restaurant):
    def __init__(self, restaurant_name, cuisine_type):
        super().__init__(self,restaurant_name, cuisine_type)
        self.favors = {'Vanilla', 'Chocolate', 'Green Tea' 'Strawberry'}

这里不应该写self,删除self后程序正常运行。

笔记:在子类的__init__方法中,使用super().__init__创建子类的属性,使得这些参数关联到父类的参数上。

提出问题:super().__init__方法下的参数是以怎样的规则关联到父类的?如果父类的参数名与子类参数名不同,能否进行关联

接下来做实验确认:

父类中:

python 关于继承的实验

子类中

python 关于继承的实验

定义的实例

python 关于继承的实验

运行结果

python 关于继承的实验

所以,在定义子类时,是以顺序来关联父类的属性参数的。而在调用子类方法时,参数是直接用的父类参数。








源代码:

class Restaurant():
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
        self.number_served = 0

    def describe_restaurant(self):
        print("The restaurant's name is " + self.restaurant_name )
        print("The restaurant's cuisine type is " + self.cuisine_type)

    def open_restaurant(self):
        print("The restaurant is opening")

    def set_number_served(self, number):
        self.number_served = number
        print("The restaurant served " + str(restaurant.number_served) + " person")

    def increment_number_served(self, number):
        self.number_served += number
        print("I think this restaurant may can serve " + str(self.number_served) + " person")


class IceCream(Restaurant):
    def __init__(self, restaurant_name, cuisine_type):
        super().__init__(restaurant_name, cuisine_type)
        self.favors = {'Vanilla', 'Chocolate', 'Green Tea' 'Strawberry'}

    def show_icecream(self):
        print("We provide these Ice cream :")
        print(self.favors)


restaurant = Restaurant('KFC', 'Fry')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.set_number_served(20)
restaurant.increment_number_served(30)


IceCreamStand = IceCream('JJ', 'ice')
IceCreamStand.show_icecream()

执行结果:

python 关于继承的实验

相关文章:

  • 2021-06-14
  • 2022-03-04
  • 2021-06-19
  • 2021-11-06
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
  • 2022-02-15
猜你喜欢
  • 2022-12-23
  • 2021-08-11
  • 2021-06-15
  • 2021-12-05
  • 2022-12-23
相关资源
相似解决方案