首页 > 解决方案 > 我使用 super() 函数在子类的内部调用父类的 __init__() ,但这不应该创建父类的实例吗?

问题描述

class Computer():
    def __init__(self, computer, ram, ssd):
        self.computer = computer
        self.ram = ram
        self.ssd = ssd


class Laptop(Computer):
    def __init__(self, computer, ram, ssd, model):
        super().__init__(computer, ram, ssd)
        self.model = model

      
lenovo = Laptop('lenovo', 2, 512, 'l420')

因为该super()函数返回一个代理对象,Computer在这种情况下它是基类的一个实例,所以不 super().__init__(computer,ram,ssd)应该创建类的实例Computer而不是Laptop类。在这一行中作为self参数传递给?__init__super().__init__(computer,ram,ssd)

标签: python

解决方案


__init__方法是一个实例方法,它在实例创建后执行。

class 方法__new__负责创建特定类的新实例,并且显然在实例的init方法之前调用。

按照这个逻辑,调用 tosuper().__init__()应该只初始化基类的参数。


推荐阅读