1

私は、テキストファイル(疑問に思っている場合はDungeon Crawl morgueファイル)でいっぱいのディレクトリを掘り下げて、さまざまな値を抽出するPythonスクリプトに取り組んでいます。これを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 at 0x02262FD0>"

このメソッドが文字列を返さないのはなぜですか?問題はgold_totalまたはにあり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 に答える