【发布时间】:2018-11-18 08:53:49
【问题描述】:
我最近从 Matlab 迁移到 Python,想将一些 Matlab 代码转移到 Python。但是突然出现了一个障碍。
在 Matlab 中,您可以定义一个类及其方法并创建实例的 nd 数组。好处是您可以将类方法应用于实例数组,只要方法被编写好,它就可以处理数组。现在在 Python 中,我发现这是不可能的:将类方法应用于实例列表时,它不会找到类方法。下面是我如何编写代码的示例:
class testclass():
def __init__(self, data):
self.data = data
def times5(self):
return testclass(self.data * 5)
classlist = [testclass(1), testclass(10), testclass(100)]
times5(classlist)
这将在 times5(classlist) 行上产生错误。现在这是一个简单的示例,解释了我想要做什么(最终类将有多个 numpy 数组作为变量)。
在 Python 中获得这种功能的最佳方式是什么?我想这样做的原因是因为它允许批处理操作并且它们使类更强大。我能想到的唯一解决方案是定义第二个类,其中包含第一个类的实例列表作为变量。批处理需要在第二类中实现。
谢谢!
【问题讨论】:
-
一旦你熟悉了核心 Python,你应该考虑学习 Numpy。 Numpy 可以有效地对数字数组进行算术运算,但它不会加快对一般 Python 对象的方法的执行。
-
您可以使用列表理解创建该列表:
[u.times5() for u in classlist]。您可以填充输入列表,如classlist = [testclass(u) for u in (1, 10, 100)]。如果您实际上不需要保留classlist,则可以将它们组合起来。 -
你必须在类本身上使用方法......所以它被定义为testclass()的方法,所以你必须这样做:instance = testclass(1)