内のリストのようなインデックス・アクセスを実装私はすなわち、配列に似た構文を使用してPythonオブジェクトのいくつかの値にアクセスできるようにしたいと思います:は、Python
obj = MyClass()
zeroth = obj[0]
first = obj[1]
が可能、このですか?もしそうなら、どうすればこの問題をPythonクラスに実装できますか?
内のリストのようなインデックス・アクセスを実装私はすなわち、配列に似た構文を使用してPythonオブジェクトのいくつかの値にアクセスできるようにしたいと思います:は、Python
obj = MyClass()
zeroth = obj[0]
first = obj[1]
が可能、このですか?もしそうなら、どうすればこの問題をPythonクラスに実装できますか?
__getitem__
、__setitem__
、および__delitem__
を書いたり書き換えたりする必要があります。
したがって、たとえば:
class MetaContainer():
def __delitem__(self, key):
self.__delattr__(key)
def __getitem__(self, key):
return self.__getattribute__(key)
def __setitem__(self, key, value):
self.__setattr__(key, value)
これは、その属性へのインデックス付きアクセスを可能にする非常に単純なクラスです。
__getitem__
と__setitem__
の方法を使用してください。
class MyClass:
def __getitem__(self, key):
return some_value_related_to_key
def __setitem__(self, key, value):
# set value (if needed)
明らかに、これらのグーグルの場合、これは「インデックス登録」と呼ばれています。 – PeterJCLaw
リストがPythonでそうでない限り(私はほとんど使用しません)、リストの代わりにタイトルにインデックスを付けるべきでしょうか? –
@Merlyn、リストは確かにそのようなものです。とにかく追加されました。 – PeterJCLaw