我目前拥有的代码不起作用
import pprint
class Kile(object):
def __init__(self, name):
self.name = name
kilevalue = 1
def checkkilevalue(self):
print (self.kilevalue)
kilecounter = 0
krid = []
for row in range(4):
krid.append([])
for colomn in range(4):
krid[row].append([])
for level in range(3):
krid[row][colomn].append([])
for tile in range(1):
krid[row][colomn][0].append(Kile(kilecounter))
kilecounter += 1
print(kilecounter)
print(krid[0][0][0])
pprint.pprint(krid)
print(krid[0][0][0].kilevalue)
它显示网格,它显示[row][colomn][0]
个地方的对象,但它没有.kilevalue
属性
现在另一种方式确实有效,但我不需要它。
class Tile(object):
def __init__(self, name):
self.name = name
tilevalue = 0
def checktilevalue(self):
print (self.tilevalue)
trid = []
ttilecounter = 0
for row in range(3):
trid.append([])
for colomn in range(3):
trid[row].append(Tile(ttilecounter))
ttilecounter += 1
print(ttilecounter)
pprint.pprint(trid)
print(dir(trid[0][0]))
答案 0 :(得分:0)
我认为您的错误是您只在函数本身中分配kilevalue
。我想你希望将kilevalue
分配给班级。
为此,请将kilevalue = 1
更改为self.kilevalue = 1
编辑:我认为krid [row] [colomn] [0]总是无,因为你没有设置它。
尝试在krid[row][colomn][0] = []
krid[row][colomn][0].append(Kile(kilecounter))
答案 1 :(得分:0)
您的kile
对象没有kilevalue
实例变量。在__init__()
方法中,您只是创建一个名为kilevalue
而不是实例变量的局部变量。
您需要在1
方法中将self.kilevalue
分配给__init__()
kilevalue
作为实例变量 -
def __init__(self, name):
self.name = name
self.kilevalue = 1
答案 2 :(得分:0)
在__init__
的{{1}}方法中,您正在分配Kile
,但您将其用作财产。
我认为您需要将其更改为kilevalue = 1
才能以您希望的方式使用它。
注意:您还在self.kilevalue = 1
内定义checkkilevalue
方法。它将无法从其他任何地方访问(假设缩进在您的示例中是正确的)
答案 3 :(得分:0)
所以经过一些修补和尝试答案以及更多的修修补补后我找到了解决方案。虽然我真的不明白它。
class Kile(object):
def __init__(self, name):
self.name = name
kilevalue = 2
def checkkilevalue(self):
print (self.kilevalue)
krid = []
kilecounter = 0
for row in range(4):
krid.append([])
for colomn in range(4):
krid[row].append([])
for level in range(1):
krid[row][colomn].append(Kile(kilecounter))
kilecounter += 1
for level in range(2):
krid[row][colomn].append([])
所以首先我将对象附加到第三个列表,然后将另外两个空列表项追加到该列表中。这很有效。无论如何,感谢您的支持:)