我有一个嵌套列表,名为env,在构造函数中创建,另一个方法用于填充网格元素,定义如下:
class Environment(object):
def __init__(self,rowCount,columnCount):
env = [[ None for i in range(columnCount)] for j in range(rowCount) ]
return env
def addElement(self, row, column):
self[row][column] = 0
在后面的代码中,我通过运行以下命令创建环境的实例:
^{pr2}$然后我想通过运行以下命令向环境添加元素:
myEnv.addElement(2,2)
所以我期望的是我会收到一个新的环境对象,它是一个6x6网格,网格的2,2位置有一个0。但那没用。在
我有两个错误:
当尝试执行addElement(2, 2)
时,我们遇到的主要问题是:
"TypeError: 'Environment' object does not support indexing.
我查看了__getitem__
和__setitem__
方法,但无法让它们在多维列表中工作。有没有更好的数据结构可以用来创建网格?在
这里的问题是不能用
__init__
替换对象。您可以将list
子类化,并在__new__
中执行某些操作,但这将是一个巨大的过度杀戮,更好的选择是包装列表:请注意,您声称调用
myEnv = createEnvironment(6,6)
-使用函数而不是构造函数有点奇怪。在如果您真的希望对象的行为类似于列表,那么您当然可以提供一些额外的包装函数,比如
^{pr2}$__getitem__
/__setitem__
。E、 g组:例如,它允许您执行
some_environment[5, 6]
。(您可能宁愿返回该列,这取决于您的系统和什么最适合您)。在相关问题 更多 >
编程相关推荐