我最近从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)
这将在times 5(classlist(行上给出一个错误。现在,这是一个简单的例子,解释了我想要做什么(最后一个类将有多个numpy数组作为变量(。
在Python中获得这种功能的最佳方式是什么?我之所以要这样做,是因为它允许批处理操作,并且它们使类更加强大。我能想到的唯一解决方案是定义第二个类,该类将第一个类的实例列表作为变量。然后需要在第二类中实现批处理。
谢谢!
更新:
在你的评论中,我注意到这句话,
例如,一个函数,它获取列表中第一个类的数据,并减去后面所有类的数据。
这可以通过reduce函数来解决。
class testclass():
def __init__(self, data):
self.data = data
def times5(self):
return testclass(self.data * 5)
from functools import reduce
classlist = [x.data for x in [testclass(1), testclass(10), testclass(100)]]
result = reduce(lambda x,y:x-y,classlist[1:],classlist[0])
print(result)
起源答案:
事实上,你需要的是列表理解。
请让我给你看代码
class testclass():
def __init__(self, data):
self.data = data
def times5(self):
return testclass(self.data * 5)
classlist = [testclass(1), testclass(10), testclass(100)]
results = [x.times5() for x in classlist]
print(results)