嘗試創建 getitem 方法時出現奇怪的錯誤。
我的代碼是:
def __getitem__(self, item):
if (self.shape[0] == 1):
return self.values[item]
else:
x, y = item
return self.twoDim[x][y]
當我嘗試時,我看不到我的錯誤在哪里
assert my_array[1][0] == 4
我在以下情況下收到此錯誤:
x, y = item
TypeError: cannot unpack non-iterable int object
知道問題是什么嗎?感謝任何提示
uj5u.com熱心網友回復:
做array[0][1]
是首先傳遞0
給__getitem__
函式,然后無論函式回傳什么,它都會傳遞[1]
給該函式。通過您的實施,您無法做到這一點。您必須在第一個函式中輸入一組值__getitem__
:
class Array:
def __init__(self):
self.shape = (2, 2)
self.values = None
self.twoDim = [[1, 2], [3, 4]]
def __getitem__(self, item):
print(f"{item=}")
if (self.shape[0] == 1):
return self.values[item]
else:
x, y = item
return self.twoDim[x][y]
array = Array()
try:
print(array[1][0]) # item=1
except TypeError:
pass
print("------")
print(array[1, 1] == 4) # item=(1, 1)
# True
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/507295.html