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

如何使用__init__方法简化这段Python Vehicle类代码?

问题分析与解决

原代码存在两个核心问题:一是创建实例后直接赋值的name、kind等是全局变量,并未绑定到car1、car2的实例属性上,导致调用description()时只会使用类的默认值;二是value = 60,000.00里的逗号属于语法错误,会生成元组而非浮点数。

以下是用__init__方法重构后的代码,创建实例时可直接初始化属性,大幅简化流程:

class Vehicle:
    def __init__(self, name, kind, color, value):
        self.name = name
        self.kind = kind
        self.color = color
        self.value = value

    def description(self):
        desc_str = "%s is a %s %s worth $%.2f." % (self.name, self.color, self.kind, self.value)
        return desc_str

# 实例化时直接传入参数完成属性初始化
car1 = Vehicle("Fer", "convertible", "red", 60000.00)
car2 = Vehicle("Jump", "van", "blue", 10000.00)

# 测试代码
print(car1.description())
print(car2.description())

关键说明

  • __init__是Python类的构造方法,创建实例时会自动执行,专门用于初始化实例的专属属性。
  • 通过self.属性名的方式,将参数值绑定到每个实例上,确保不同实例拥有独立的属性值。
  • 若需要保留部分属性的默认值(比如默认kind为"car"),可以给__init__的参数设置默认值:
    class Vehicle:
        def __init__(self, name, color, value, kind="car"):
            self.name = name
            self.kind = kind
            self.color = color
            self.value = value
    
        def description(self):
            desc_str = "%s is a %s %s worth $%.2f." % (self.name, self.color, self.kind, self.value)
            return desc_str
    
    # 使用默认kind创建实例
    car3 = Vehicle("Generic", "black", 20000.00)
    print(car3.description())  # 输出: Generic is a black car worth $20000.00.
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:21:16