我有一个类,我想从一个数组和一个切片创建一个实例。我希望语法使用冒号语法,例如列表和numpy数组。以下示例是MNWE(最小无效示例):
import numpy as np
class A():
def __init__(self, data):
self.data = data
def __getitem__(self, index):
return self.data.__getitem__(index)
@classmethod
def fromArray(cls, array, index):
return cls(array.__getitem__(index))
x = np.empty((4, 2, 2))
a = A(x)
print(a[:, 0, 0])
# Create from array, using slices:
my_slices = (slice(0, -1, 1), slice(0, 1, None), slice(0, 1, None))
b = A.fromArray(x, my_slices)
print(b.data)
# Create from array, using slice colon syntax (fails):
c = A.fromArray(x, :, 0, 0)
print(c.data)
除了平面尺寸外,我希望结果是相同的。
答案 0 :(得分:0)
我不知道你想做什么。
如何制作工厂课程?
class AFactory:
def __init__(self, x):
self.x = x
def __getitem__(self, index):
return A.fromArray(self.x, index)
c = AFactory(x)[:, 0, 0]
print(c.data)
或者,如果您希望将切片设置在数组之前:
class AFactory:
def __getitem__(cls, index):
return lambda x: A.fromArray(x, index)
c = AFactory()[:, 0, 0](x)
print(c.data)