У меня есть класс, и я хотел бы создать экземпляр из массива плюс фрагмент. Я хотел бы, чтобы синтаксис использовал синтаксис двоеточия, например, используемый. списки и массивы. Следующий пример - 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)
Я бы хотел, чтобы результаты были такими же, за исключением плоских размеров.