ここにPythonのnoobがあります。私は "テキストアドベンチャー"タイプのゲームに取り組んでいます。私は現在、これらのアイテムのさまざまなデフォルト属性を持つゲームアイテム用のクラスを作成しようとしています。これらの属性の1つは、プレーヤーがこのアイテムを取ることができるかどうかを示すためにブール値の "takeable"になります。私が作成したすべてのアイテムに対してTrue
またはFalse
をtakeable
に割り当てた場合に限り、この作業を行うことができました。私はtakeable=False
にデフォルトする方法を考え出しましたが、それは "取ることができる"いくつかの項目のためにtakeable=True
を選択的に渡すことができないようです。Python 3のデフォルトのクラス属性値を上書きする方法は?
class Objects():
"""Basic structure of all game objects."""
def __init__(self, item_name, item_description):
self.item_name = item_name
self.item_description = item_description
self.takeable = False
items = {
"main_room_table": Objects("Wooden table", "A large wooden table with items scatter atop its surface."),
"main_room_key": Objects("Small brass key", "A small brass skeleton key. What could it unlock?", takeable=True)
これはPythonが別の引数を期待していないときに、私は、引数takeable=True
を渡しているので、TypeError: __init__() got an unexpected keyword argument 'takeable'
が、私はこれが起こっている理解してしまいます。
クラスインスタンスの作成時にこのようなデフォルト値をオーバーライドする方法はありますか?私はちょうどtakeable
の新しい "アイテム"インスタンスを作成するたびに渡されるブール値を要求することができますが、値がデフォルトになり、クラスインスタンスの作成でそれを上書きできる方法があるようです。
で
dict
外でそれを行うには、それを必要とします。私は "takeable = False"をどこに置くべきか誤解した。ご回答いただきありがとうございます。 – CrashTestDummy