我有一个名为Maps
的类,我从中创建了两个列表l
和lm
。l
应该随着某个事件而改变,但是lm
(内存列表)应该保持原样。你知道吗
有没有办法防止我的列表类发生变化? 打你!你知道吗
class Maps(list):
def createInitial(self, lvlC):
#self.extend(mapDico[lvlC.value])
#get (i,j) coords of "i" in l
def findI(self):
for ordinate, abscissa in enumerate(self):
try:
return (ordinate, abscissa.index("i"))
except:
pass
#get number of "x" in lm
def countX(self):
nbX=0
for rows in range(len(self)):
for elements in range(len(self)):
if self[rows][elements]=="x":
nbX+=1
return nbX
#load next map
def nextLevel(self, nxtL):
del self[:]
self.extend(mapDico[nxtL])
lvlC=Counters()
lm=Maps()
lm.createInitial(lvlC)
l=Maps()
l.createInitial(lvlC)
这里开始“控制器”文件:
if goalC.value>0 and goalC.value==lm.countX():
lvlC.increment(1)
#lvl.config(text=" | Level Complete ", bg="limegreen")
l.nextLevel(lvlC.value)
lm.nextLevel(lvlC.value)
muvC.reinitialize()
nbMuv.config(text="Moves: "+str(muvC.value))
pushC.reinitialize()
nbPush.config(text=" | Pushes: "+str(pushC.value))
goalC.reinitialize()
nbGoal.config(text=" | Goals: "+str(goalC.value))
lvl.config(text=" | Current level: "+str(lvlC.value), bg="darkgray")
print("New moves",muvC.value, "New pushes",pushC.value, "New level",lvlC.value)
print("New countX: ", lm.countX())
print("New goals: ", goalC.value)
for i in l:
print(i)
for i in lm:
print(i)
can.delete("all")
for i in r:
for j in r:
time.sleep(.005)
can.create_rectangle(j*n, i*n, j*n+n, i*n+n, fill=fillSquare(i,j, l), outline="darkslategray")
您可能需要使用不同的类来定义这些东西。让同一类的实例同时可变和不可变不是一个好主意。你知道吗
所以我建议您在MixinClass中定义所有方法,然后创建两个类,一个是
list
(可变)的子类,另一个是tuple
(不可变)的子类也许是这样的
相关问题 更多 >
编程相关推荐