Я исхожу из фона Matlab. В Matlab я могу создать определение класса, а затем создать массив объектов. Я могу легко разыменовать каждый объект с помощью индекса. Кроме того, когда я вызываю метод из массива объектов (без индекса), у меня есть доступ ко всем объектам массива. Например, скажем, что myNewClass имеет свойства .data и .text, он также имеет метод .clob. Я могу:Как создать собственный класс коллекции в Python
% init
a(1) = myNewClass;
a(2) = myNewClass;
a(1).data = [0;0;0];
a(2).data = [1;1;1];
Так что теперь, если я называю a.clob (а не (1) .clob или .clob (2)), я могу сделать что-то вроде
% this is a function inside the methods definition of my class definition
function clob(self)
% self here is my object array, "a", from above
for i=1:length(self)
% deref a single object
self(i).goClobYourself;
end
end
Как я делаю что-то подобное в Python? Обратите внимание: я хочу, чтобы мой класс был индексированной коллекцией, вроде списка. Но я не хочу, чтобы мой «класс-список» принимал любой класс, только myNewClass. Если я наследую «список», мой класс будет просто «списком» с атрибутами .data, .text и функцией .clob? Также обратите внимание: я не хочу «список», содержащий мои объекты, я хочу, чтобы мои объекты были перечислены, чтобы я мог их отделить от индекса: a [1] .clob() или (1) .clob () (?? или что-то типа того). Или я хочу передать весь массив себе: a.clob() дает мне доступ к списку. У меня может быть немного облачной терминологии.
С наилучшими пожеланиями
«Но я не хочу мой «класс-список», чтобы принять любой класс, просто myNewClass ». Простой ответ: «Не делай этого». Практически никогда не было веских оснований для этого. Это может быть обычным явлением в MATLAB, но на Python он сильно нахмурился. – TheBlackCat