【发布时间】:2015-10-10 07:26:06
【问题描述】:
我来自 Matlab 背景。在 matlab 中,我可以创建一个类定义,然后创建一个对象数组。我可以轻松地使用索引取消引用每个对象。此外,当我从对象数组(没有索引)调用方法时,我可以访问数组中的所有对象。例如,假设 myNewClass 具有属性 .data 和 .text,它还具有方法 .clob。我可以:
% init
a(1) = myNewClass;
a(2) = myNewClass;
a(1).data = [0;0;0];
a(2).data = [1;1;1];
所以现在,如果我调用 a.clob(不是 a(1).clob 或 a(2).clob),我可以执行类似的操作
% 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() 或 a(1).clob( ) (?? 或类似的东西)。或者,我想将整个数组传递给 self:a.clob() 让我可以访问列表。我的术语可能有点模糊。
最好的问候
【问题讨论】:
-
“但是,我不希望我的“班级列表”接受任何班级,只接受 myNewClass。”简单的答案是“不要这样做”。实际上从来没有充分的理由这样做。它在 MATLAB 中可能很常见,但在 Python 中却很不受欢迎。
标签: python arrays matlab list class