2011-06-26 6 views
18

Me gustaría ser capaz de acceder a algunos valores de un objeto Python usando la sintaxis de matrices similares, es decir:índice de lista como en Python

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

es esto posible? Si es así, ¿cómo implementar esto en la clase Python en cuestión?

+2

Aparentemente, para aquellos que usan Google, esto se llama 'indización'. – PeterJCLaw

+0

A menos que las listas sean de esa manera en python (no estoy seguro, raramente lo uso), ¿tal vez debería poner indexación en el título en lugar de en la lista? –

+1

@Merlyn, las listas son así, y mucho más. Agregado de todos modos. – PeterJCLaw

Respuesta

30

Necesita escribir o anular __getitem__, __setitem__ y __delitem__.

Así, por ejemplo:

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) 

Esta es una clase muy simple que permite el acceso indexado a sus atributos.

2

Utilice los métodos __getitem__ y __setitem__.

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

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