我正在研究一个Python脚本,它遍历一个充满文本文件的目录(Dungeon Crawl停尸房文件,如果你想知道的话)并提取和各种值。当尝试以OOP的方式执行此操作时,我遇到了一些问题。
这是GameSummary类,它接收game_record_list
- 这是每个单独游戏记录的列表,我可以从中获取整数值record.gold
。
class GameSummary:
def __init__(self, game_record_list):
self.game_record_list = game_record_list
self.gold_summary = self.gold_report()
def gold_total(self):
total_gold = 0
for record in self.game_record_list:
total_gold += record.gold
return total_gold
def gold_report(self):
report = "Total gold acquired: " + str(self.gold_total)
return report
稍后我将GameSummary实例化为master_summary并尝试使用以下命令将从gold_report返回的字符串写入日志文件:
log_file.write(master_summary.gold_summary)
最终写入我的文本文件的是:
“获得的总黄金:绑定方法GameSummary.gold_total of< main .GameSummary instance in 0x02262FD0>”
为什么这个方法不返回字符串?问题是gold_total
还是gold_report
?
答案 0 :(得分:7)
report = "Total gold acquired: " + str(self.gold_total)
应该是
report = "Total gold acquired: " + str(self.gold_total())
或者,gold_total
可以成为一个属性,因此可以像字段一样访问它:
@property
def gold_total(self):
...
然后第一种方式可以正常工作。
答案 1 :(得分:2)
str(function)
返回包含函数地址的字符串。 str(function())
返回一个字符串,表示函数返回的值。