47

I'd like to be able to access some values of a python object using array-like syntax, ie:

obj = MyClass()
zeroth = obj[0]
first = obj[1]

Is this possible? If so, how do you implement this in the python class in question?

0

2 Answers 2

72

You need to write or override __getitem__, __setitem__, and __delitem__.

So for example:

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)

This is a very simple class that allows indexed access to its attributes.

Sign up to request clarification or add additional context in comments.

Comments

6

Use the __getitem__ and __setitem__ methods.

class MyClass:
    def __getitem__(self, key):
        return some_value_related_to_key

    def __setitem__(self, key, value):
        # set value (if needed)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.