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

时间:2012-06-01 04:00:22

标签: 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

稍后我将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

2 个答案:

答案 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())返回一个字符串,表示函数返回的值。