Python обходит __getattr__
, __getattribute__
и экземпляр dict при поиске «специальных» методов для реализации языковой механики. (По большей части специальные методы - это те, у которых есть два символа подчеркивания с каждой стороны имени.) Если вы ожидали, что i[0]
вызовет i.__getitem__(0)
, что в свою очередь вызовет i.__getattr__('__getitem__')(0)
, вот почему этого не произошло .
Массивы - это типы данных фиксированного размера, которые поддерживаются JVM и предоставляют такие функции, как произвольный доступ.
Collection
не совпадают с массивами. Существуют также коллекции, подобные Set
, которые имеют разные свойства. В общем, используйте ArrayList
, если вы хотите иметь динамически растущий список.