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

如何打印Python类实例而非内存引用并输出属性与计算结果

自定义Pension类实例的打印内容,显示属性与养老金计算结果

要解决直接打印类实例显示内存引用的问题,只需在Pension类中重写__str__或__repr__方法,自定义打印时的输出格式,同时调用result方法计算退休储蓄。以下是具体修改方案:

1. 重写类的打印方法

在Pension类中添加__str__方法,定义实例被打印时的输出内容,包含所有属性和退休储蓄计算结果:

class Pension:
    def __init__(self, name, age, savings, growth):
        self.name = name
        self.age = age
        self.savings = savings
        self.growth = growth

    def result(self):
        amount = self.savings
        rate = 1 + (self.growth / 100)
        years = 65 - self.age
        return (amount * (1 - pow(rate, years))) / (1 - rate)

    # 重写__str__方法,自定义打印内容
    def __str__(self):
        # 列出所有属性
        attr_lines = [
            f"姓名: {self.name}",
            f"年龄: {self.age}",
            f"当前储蓄: {self.savings} 美元",
            f"增长率: {self.growth}%"
        ]
        # 计算并添加退休储蓄结果
        pension_total = self.result()
        attr_lines.append(f"退休总储蓄: {pension_total:.2f} 美元")
        return "\n".join(attr_lines)

    # 可选:重写__repr__,让打印列表时也显示自定义内容
    def __repr__(self):
        return self.__str__()

2. 优化main函数的输入逻辑(可选)

原代码每创建一个实例就会请求用户输入增长率,可能导致重复输入。若需要统一使用同一个增长率,可将输入逻辑移到循环外:

def main():
    with open('personer.txt') as f:
        raw_data = f.readlines()

    data = [row.split("/") for row in raw_data]
    data = [convert_row(row) for row in data]

    # 统一输入一次增长率,所有实例共用
    growth_rate = get_growth()
    pensions = [Pension(*i, growth_rate) for i in data]

    # 打印所有实例
    print("所有用户的养老金信息:")
    for pension in pensions:
        print(pension)
        print("-" * 30)  # 分隔线,便于阅读

    # 若重写了__repr__,直接打印列表也会显示每个实例的详细内容
    # print(pensions)

3. 效果说明

运行代码后,输入增长率(统一输入或逐个输入),打印实例时会输出类似以下内容:

姓名: 张三
年龄: 30.0
当前储蓄: 5000.0 美元
增长率: 5.0%
退休总储蓄: 35934.09 美元
------------------------------
姓名: 李四
年龄: 40.0
当前储蓄: 10000.0 美元
增长率: 5.0%
退休总储蓄: 20934.80 美元
------------------------------

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:40