gpt4 book ai didi

python - 类查找函数python

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:29 26 4
gpt4 key购买 nike

我有课

class Kaart:


def __init__(self, rows = 10, colls = 10):
self.rows = rows
self.colls = colls
self.matrixRC = []
for _ in range(rows):
self.matrixRC.append([2 for _ in range(colls)])

我想知道是否有一种方法可以在不执行 Kaart.matrixRC[1][2] 的情况下获取 matrix 中某个位置的值,但是例如只是做 Kaart(1, 2)Kaart[1, 2] (Kaart 不是这些示例中的发起者,而是 Kaart 类)。我看到有一个 __getitem__() 函数,但我不太确定它的作用,而且它看起来不像我需要的那样。

最佳答案

是的,__getitem__ 有效。 ;) 您还应该定义 __setitem__。我还添加了一个 __str__ 方法。

class Kaart:
def __init__(self, rows = 10, colls = 10):
self.rows = rows
self.colls = colls
self.matrixRC = []
for _ in range(rows):
self.matrixRC.append([2 for _ in range(colls)])

def __getitem__(self, key):
r, c = key
return self.matrixRC[r][c]

def __setitem__(self, key, value):
r, c = key
self.matrixRC[r][c] = value

def __str__(self):
return '\n'.join(str(row) for row in self.matrixRC)

kaart = Kaart()
kaart[2, 3] = 7
print(kaart)
print(kaart[2, 3])

输出

[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 7, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
7

如果我们遵循Roars suggestion in the comments ,我们可以稍微简化一下 __str__ 方法。

def __iter__(self):
return self.matrixRC.__iter__()

def __str__(self):
return '\n'.join(str(row) for row in self)

关于python - 类查找函数python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47548524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com