1

我正在编写一个 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)

然而,最终写入我的文本文件的是:

“获得的总金币:< main .GameSummary instance at 0x02262FD0> 的绑定方法 GameSummary.gold_total”

为什么这个方法不返回一个字符串?问题在gold_totalor中gold_report

4

2 回答 2

10
report = "Total gold acquired: " + str(self.gold_total)

应该

report = "Total gold acquired: " + str(self.gold_total())

或者,gold_total可以将其设为属性,以便可以像字段一样访问它:

@property
def gold_total(self):
    ...

然后第一种方法可以正常工作。

于 2012-06-01T04:02:56.213 回答
2

str(function)返回一个包含函数地址的字符串。str(function())返回一个字符串,表示函数返回的值。

于 2012-06-01T04:07:00.273 回答