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

求助:基于Python Data Class实现电影角色打印程序的问题

解决Python Dataclass实现电影角色类的问题

问题分析

你的代码存在几个关键问题:

  • @dataclass 定义的字段默认是必填项,无法直接创建空实例 Character.Character()
  • 未实现主程序中调用的 set_name/set_kind/set_planet 方法
  • 缺少格式化输出的 to_string 方法
  • 额外的 char 函数没有实际作用

修正后的Character类代码

将以下代码保存为 Character.py:

from dataclasses import dataclass

@dataclass
class Character:
    # 给字段设置默认空字符串,支持空实例化
    name: str = ""
    kind: str = ""
    planet: str = ""

    # 实现setter方法
    def set_name(self, name: str):
        self.name = name

    def set_kind(self, kind: str):
        self.kind = kind

    def set_planet(self, planet: str):
        self.planet = planet

    # 实现格式化输出方法
    def to_string(self) -> str:
        # 处理a/an的语法:元音开头用an,否则用a
        article = "an" if self.kind.lower()[0] in {'a', 'e', 'i', 'o', 'u'} else "a"
        return f"{self.name} is a(n) {self.kind} from {self.planet}"

验证主程序运行

你的主程序代码无需修改,运行后会输出:

Indiana is a(n) Human from Earth

Luke Skywalker is a(n) Human from Tatooine

补充说明

  • 给dataclass字段设置默认值后,既支持直接传参创建实例,也支持空实例化后通过setter赋值
  • to_string 方法中加入了a/an的语法判断,让输出更符合自然语言习惯
  • dataclass会自动生成__init__、__repr__等基础方法,无需手动编写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:40:15