我正在研究一个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
Run Code Online (Sandbox Code Playgroud)
稍后我将GameSummary实例化为master_summary并尝试使用以下命令将从gold_report返回的字符串写入日志文件:
log_file.write(master_summary.gold_summary)
Run Code Online (Sandbox Code Playgroud)
然而,最终写入我的文本文件的是:
"获得的总黄金:绑定方法GameSummary.gold_total < main .GameSummary instance in 0x02262FD0>"
为什么这个方法不返回字符串?问题是gold_total或gold_report?
report = "Total gold acquired: " + str(self.gold_total)
Run Code Online (Sandbox Code Playgroud)
应该
report = "Total gold acquired: " + str(self.gold_total())
Run Code Online (Sandbox Code Playgroud)
或者,gold_total可以将其设为属性,以便可以像字段一样访问它:
@property
def gold_total(self):
...
Run Code Online (Sandbox Code Playgroud)
然后第一种方式将正常工作.