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
相关产品推荐
相关产品推荐

