我想包括一些元數據到一個python切片對象,並添加變量來指示切片中每個元素的索引。元數據用於標記切片正在檢索的每個元素。我知道還有其他可以使用的標籤數據結構,但在我的項目中,slice被預定義爲numpy數組的下標,並在各個地方重新使用。所以,對我來說,找到一種合併這種方式是有道理的。是否可以模仿python切片對象或子類?
我在考慮分類slice
,但顯然它不能是subclassed,這在鏈接問題的答案中已清楚解釋。從那以後有什麼變化嗎?
我希望做的是創建一個類,看起來像:
class Subscript:
def __init__(self, start, stop, step=None, labels=None):
self.labels = labels
self.slc = slice(start, stop, step)
for i, l in zip(range(start, stop, step), labels):
setattr(self, l, i)
,並能夠使用這樣的:
sub = Subscript(0, 5, labels=['s0', 's1', 's2', 's3', 's4'])
list(range(10))[sub] # [0, 1, 2, 3, 4]
range(10)[sub.s0] # 0
是有辦法做到這一點沒有不得不添加一個__call__
方法來返回片?不知何故,我懷疑這是因爲在sub
到__getitem__
的數組或列表不知道如何處理。我知道我可能只是將這些信息猴子補丁到slice
,但我想知道這種類型的東西是否可以在課堂上完成。
目前,我分別限定所述切片和切片元素,如:
sub = slice(0, 5)
s0, s1, s2, s3, s4 = range(5)
但是,這種方法使得它更難多維數組的輸出處理爲一個字典,其中鍵是下標元素的組合的情況下大於1的sub
並且值是1d陣列。
請不要使用'exec'動態設置屬性,'setattr'更適合這個。另外,你的'__init__'沒有'self'。 – vaultah
謝謝!忘記那個 – pbreach