如何创建含多个实例的Python Class并正确打印实例信息?
修正你的Python类代码问题
先给你修正后的完整代码,再掰扯问题出在哪:
# Class about environmental engineering firms in Oregon. class EnviEngrFirmsOR: # 初始化方法,接收四个参数并绑定到实例 def __init__(self, name, location, specialization, hiring): self.name = name self.location = location self.specialization = specialization self.hiring = hiring # 打印实例信息的方法,用self访问当前实例属性,包含所有需求字段 def print_firm(self): print(f'{self.name} is located in {self.location}, specializes in {self.specialization}, and {self.hiring} hiring.') # 正确实例化:直接传参数给构造函数,不需要后续缩进赋值 firm1 = EnviEngrFirmsOR( 'David Evans and Associates, Inc.', 'Portland', 'multidisciplinary areas', 'is' ) # 调用实例的打印方法 firm1.print_firm() # 可以继续创建其他实例,比如firm2 firm2 = EnviEngrFirmsOR( 'ABC Environmental', 'Eugene', 'water resource management', 'is not' ) firm2.print_firm()
原代码的问题和修正点:
- 实例化错误:原代码
firm1 = EnviEngrFirmsOR()没传__init__要求的4个参数,而且后面给firm1赋值时缩进了——全局代码不能缩进,直接顶格写就行。正确做法是实例化时直接把参数传给构造函数,一步到位。 - print_firm方法硬编码:原方法里写死了
firm1.name,这会导致不管调用哪个实例的print_firm,都只会打印firm1的信息。应该用self,它代表当前调用方法的实例,这样每个实例调用自己的print_firm都会打印自己的信息。 - 缺少specialization字段:原打印语句没包含专业方向,按你给的示例扩展了格式,把specialization加进去了。
- 缩进问题:类里的方法(
__init__、print_firm)要缩进一级,内部代码再缩进一级,原代码的缩进基本没问题,但实例化后的赋值缩进是错的,要去掉缩进。
内容的提问来源于stack exchange,提问作者Punedrr
相关产品推荐
相关产品推荐

