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

Python类继承与实例化报错问题求助

Python类继承与实例化报错问题求助

嘿,我看你这段代码里有几个关键问题导致了那些奇怪的类型报错,咱们一步步拆解清楚:

首先先把你的原始代码贴出来方便对照:

B = []
M = []

class cars(brand):
    def __init__(self):
        self.brand = brand

bmw = cars("BMW")
mercedes = cars("Mercedes")

parts.B.append(input("What parts should we install in BMW:"))
parts.M.append(input("What parts should we install in mercedes:"))

为啥会报错?主要有这三个问题:

  • 父类brand根本没定义:你写了class cars(brand):,但从头到尾没创建过brand这个类或者变量。Python以为你要继承一个叫brand的类,但它不存在,解析时就会混乱,导致你遇到的各种TypeError(比如int/None/str相关的错误,根源都是这个)。
  • __init__方法没正确接收参数:你的cars类初始化方法没有接收传入的品牌参数,就算brand存在,self.brand = brand也只是把父类(假设存在)赋值给属性,根本存不了你传入的"BMW"或"Mercedes"。
  • parts类不存在却直接调用:你定义了全局的B和M列表,但想通过parts.B访问,可你根本没创建parts这个类,也没把列表放到类里面。

修正后的代码示例

先实现你核心需求:把部件添加到parts类的对应列表里,同时正确实例化汽车对象:

# 定义Parts类,用类属性存储不同品牌的部件列表
class Parts:
    B = []  # 存储BMW的部件
    M = []  # 存储Mercedes的部件

# 定义Car类,用来表示汽车,接收品牌名称参数
class Car:
    def __init__(self, brand_name):
        self.brand = brand_name  # 把传入的品牌名存在实例属性里

# 实例化两个汽车对象
bmw = Car("BMW")
mercedes = Car("Mercedes")

# 向Parts类的对应列表添加用户输入的部件
Parts.B.append(input("What parts should we install in BMW:"))
Parts.M.append(input("What parts should we install in Mercedes:"))

# 可以打印测试一下结果
print("BMW已安装部件:", Parts.B)
print("Mercedes已安装部件:", Parts.M)

如果你的需求里确实需要用到继承(比如有一个基础的品牌类),可以这样调整:

# 定义基础的Brand类
class Brand:
    def __init__(self, name):
        self.name = name

# Car类继承自Brand
class Car(Brand):
    def __init__(self, name):
        super().__init__(name)  # 调用父类的初始化方法来设置品牌名

class Parts:
    B = []
    M = []

bmw = Car("BMW")
mercedes = Car("Mercedes")

Parts.B.append(input("What parts should we install in BMW:"))
Parts.M.append(input("What parts should we install in Mercedes:"))

这样就能正确实现你想要的功能,不会再出现那些类型错误啦~

备注:内容来源于stack exchange,提问作者Ismail Asadov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:55:27