python - 我使用 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)
解决方案
该__init__
方法是一个实例方法,它在实例创建后执行。
class 方法__new__
负责创建特定类的新实例,并且显然在实例的init方法之前调用。
按照这个逻辑,调用 tosuper().__init__()
应该只初始化基类的参数。
推荐阅读
- reactjs - WeatherApp - 反应
- python-3.x - Django MemcacheUnexpectedCloseError and [WinError 10061] No connection could be made because the target machine主动拒绝它
- azure-active-directory - Azure AD Connect 调用 PowerShell 进行同步
- javascript - 脚本小部件编码技术
- python - 使用 Python 将 Pub/Sub 消息加载到 BigQuery
- javascript - 输入增加减少影响购物车数组php javascript中的其他输入
- javascript - NeutralinoJS 在浏览器中打开本地 html 文件
- html - 如何使链接可跟踪(点击次数)
- android - onActivityCreated 已弃用。对于 DialogFrament,如果没有调用 onViewCreated 的替代品是什么
- python-3.x - Python将br标签替换为XML中的段落