You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类定义中object与list作为父类的作用及继承相关疑问

问题解答

类定义中object、list参数的作用

Python类定义时,括号内填写的是该类要继承的父类,你提到的两个参数本质都是指定继承的父类:

  • class Card(object):这里是显式声明Card继承Python所有类的顶级基类object,这是Python2时期区分新式类和经典类的写法,Python3中即使省略括号写成class Card:,也会默认继承object,属于新式类。
    • 补充:不是传入object就说明Card是基类,基类是相对概念:Card相对于object是子类,如果你后续定义其他类继承Card,那Card就是那个子类的父类(基类)。PyCharm提示里的「基类」指的是object本身是所有类的顶层基类,不是指Card是基类。
  • class StandardDeck(list):这里是显式声明StandardDeck继承Python内置的list类,因此StandardDeck属于自定义列表类,原生拥有普通列表的所有功能(比如append、pop、支持for循环遍历等)。

关于super().__init__()的疑问

这里的super().__init__()调用的是**list类的初始化方法**,和Card类没有任何关系:

  • super()会按继承链找当前类的直接父类,StandardDeck的父类是list,自然调用的是list的构造方法,初始化一个空列表,后续你往self里append的Card实例,都是存在这个自定义列表里的元素。
  • StandardDeck和Card是组合关系(前者存储后者的实例),没有继承关系,所以不会调用到Card的任何方法。

验证小技巧

你可以打印类的方法解析顺序(继承链)来确认继承关系,在代码里加入如下代码即可:

print(StandardDeck.__mro__)

输出结果为:(<class '__main__.StandardDeck'>, <class 'list'>, <class 'object'>),可以明确看到继承链里没有Card类。

内容的提问来源于stack exchange,提问作者Rdam88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:48:03