【发布时间】:2022-11-30 01:00:03
【问题描述】:
我有一个名为Pension 的类,其中包含姓名、年龄、储蓄和增长率等属性。
我有一个类方法可以计算该人退休时的总储蓄。
在我的主要功能下,我想打印类以查看我的代码是否按预期工作,但我不知道该怎么做,因为我在打印时只获取内存引用。
如何打印类实例,以便它遍历所有属性并运行函数结果,然后打印结果?值得注意的是;运行计算总养老金的“结果”函数,增长率是用户输入的,并且是它自己的函数(并在 main() 中运行)
例如,如果我尝试打印倒数第二行:print(pensions),我只会得到内存引用。所以在这种情况下,如果一个人(我从文件中读取的数据)存了 1000 美元(使用我的结果方法),我希望将该事实打印到列表中。
这是我的代码:
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)
def convert(elem: str):
if not elem.isdigit():
return elem
return float(elem)
def convert_row(r: list) -> list:
return [convert(e) for e in r]
def get_growth(msg: str = "Enter growth rate: "):
return float((input(msg).strip()))
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]
pensions = [Pension(*i, get_growth()) for i in data]
main()
【问题讨论】:
-
请使用您希望从
print(pensions)看到的输出示例更新您的问题。 -
您需要覆盖 __str__ dunder 方法
-
你要打印实例类的。更具体地说,您想要的不是
object为每个实例提供的默认字符串表示形式。这就是__str__和__repr__方法的用途。 -
这回答了你的问题了吗? How to print instances of a class using print()?
标签: python class methods printing