如何使用__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
相关产品推荐
相关产品推荐

