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

如何用return替代print实现Python Flower类输出?已尝试无输出

实现Flower类并解决输出问题

一、符合要求的Flower类实现

以下是带输入合法性校验、包含get/set方法的Flower类:

class Flower:
    def __init__(self, name: str, petal_count: int, price: float):
        # 初始化时校验输入合法性
        if not isinstance(name, str):
            raise TypeError("名称必须为字符串类型")
        if not isinstance(petal_count, int) or petal_count < 0:
            raise ValueError("花瓣数量必须是非负整数")
        if not isinstance(price, float) or price < 0.0:
            raise ValueError("价格必须是非负浮点数")
        
        self._name = name
        self._petal_count = petal_count
        self._price = price

    # 获取花名
    def get_name(self) -> str:
        return self._name

    # 设置花名(带校验)
    def set_name(self, name: str):
        if not isinstance(name, str):
            raise TypeError("名称必须为字符串类型")
        self._name = name

    # 获取花瓣数量
    def get_petal_count(self) -> int:
        return self._petal_count

    # 设置花瓣数量(带校验)
    def set_petal_count(self, petal_count: int):
        if not isinstance(petal_count, int) or petal_count < 0:
            raise ValueError("花瓣数量必须是非负整数")
        self._petal_count = petal_count

    # 获取价格
    def get_price(self) -> float:
        return self._price

    # 设置价格(带校验)
    def set_price(self, price: float):
        if not isinstance(price, float) or price < 0.0:
            raise ValueError("价格必须是非负浮点数")
        self._price = price

    # 返回花的信息字符串(替代print)
    def get_info(self) -> str:
        return f"花名: {self._name}, 花瓣数: {self._petal_count}, 价格: {self._price:.2f}"

    # 重写__str__,直接打印实例时自动调用
    def __str__(self) -> str:
        return self.get_info()

二、用return替代print实现输出

核心逻辑是让类的方法只负责生成信息字符串并返回,输出操作交给外部代码完成:

# 示例用法
try:
    lily = Flower("百合", 20, 25.5)
    # 方式1:调用get_info获取返回值后打印
    print(lily.get_info())
    # 方式2:直接打印实例,自动触发__str__的返回值输出
    print(lily)

    # 修改属性后再次输出
    lily.set_price(28.0)
    print(lily.get_info())
except (TypeError, ValueError) as e:
    print(f"错误提示: {e}")

三、代码无输出的常见原因及解决

  1. 未实例化类或调用输出方法:只定义类但没创建实例、没调用get_info()并打印,自然不会有输出。
  2. 调用return方法但未捕获返回值:如果只写lily.get_info()而不写print(lily.get_info()),方法返回的字符串不会被输出。
  3. 输入非法未捕获异常:初始化或设置属性时输入不符合要求(比如给花瓣数传字符串),抛出异常但没加try-except捕获,程序会直接终止,无法输出正常内容。

内容的提问来源于stack exchange,提问作者创死线代

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:10:45