私はuse_potion()という関数でPlayer()クラスを持っています。 IF文でuse_potion()を使用しているとき、最初はうまく動作します。 use_potionの戻り値が変更されると、if文は変更を無視します。ここIFの中でクラス関数を呼び出すと、Trueが返され続けます
コードのセクションの別のモジュールで
class Player():
def __init__(self):
inventory = ["potion"]
def has_potion(self):
return any(item == "Potion" for item in self.inventory):
:
from Player import Player
def available_actions():
moves = ["go east","go west"]
if Player().has_potion():
moves.append("use potion")
return moves
Iはavailable_actions(呼び出すとき)、それがすることになっているように、それは3つのすべての動きを返します。しかし、 "ポーション"がPlayer()。inventoryから削除されると、available_actions STILLは "east east"と "go west"ではなく、three moveを返します。 なぜこれが起こっているのか分かりません。
ファイルはStackOverflowのへようこそ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune
'available_actions'はあなたがそれを呼び出すたびに新しい' Player'インスタンスを作成します。あなたはそれをしたいと思いますか? –
'Player .__ init__'は' inventory'インスタンス属性を作成していません。それはそこのローカル変数であり、それは単に破棄されることになります。 – user2357112