为什么这个python方法返回一个内存地址?

Mic*_*ael 0 python methods

我正在研究一个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_totalgold_report

Ism*_*awi 7

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)

然后第一种方式将正常工作.