You need to enable JavaScript to run this app. Python中如何给类传递参数?嵌套类传参报错代码求修正
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何给类传递参数?嵌套类传参报错代码求修正

修正后的完整代码
class student:
    def __init__(self, name, rollno, brand, ram, cpu):
        self.name = name
        self.rollno = rollno
        # 移除多余的外部类self传参,补全cpu参数
        self.lap = self.laptop(brand, ram, cpu)

    def show(self):
        print(self.name, self.rollno)
        self.lap.show()

    class laptop:
        def __init__(self, brand, ram, cpu):
            self.brand = brand
            self.ram = ram
            self.cpu = cpu

        def show(self):
            print(self.brand, self.ram, self.cpu)

        def __str__(self):
            # __str__强制要求返回字符串,将多个属性拼接为字符串返回
            return f"{self.brand} {self.ram} {self.cpu}"

    def __str__(self):
        return f"{self.name} {self.rollno}"

# 原代码缩进错误,将实例化和调用代码移到类外部
# 修正传参顺序:原代码将ram和cpu参数传反
s1 = student("Raj", 3, "hp", 16, "i5")
s2 = student("Ram", 2, "dell", 8, "i3")

s1.show()
原代码问题梳理
  • 嵌套类实例化参数错误:外部类初始化时创建laptop实例,多传递了不必要的外部类self参数,同时漏传了cpu参数,参数匹配错误。
  • __str__方法返回值不符合规范:Python要求__str__方法必须返回字符串类型,原代码直接返回多个属性值会自动封装为元组,运行时会触发类型错误。
  • 实例化代码缩进错误:s1、s2实例化和show方法调用的代码缩进层级错误,写在了student类内部,属于类成员而非全局执行代码,运行时不会生效还会触发异常。
  • 实例化传参顺序错误:student初始化时的参数顺序为name、rollno、brand、ram、cpu,原代码实例化s1、s2时将ram和cpu的参数顺序传反,导致属性赋值错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:15:04