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

如何创建含多个实例的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:33:09