我正在尝试为对象Note
创建一个类,但由于某种原因,我创建了一个循环,并且该类无限地遍历所有函数。我需要x和y在每次对新对象Note(a,b,c,d).ExNote()
时永久更改,所以我创建了包含x和y值的列表,因为我可以更改列表中的值,然后将值附加到列表中下次我在新对象上使用.ExNote()
。
以下是所有代码:
class Note:
x=[0]
u=-4
y=[0]
def __init__(self, Num, staff, note, notetype):
self.staff = staff
self.note = note
self.notetype = notetype
self.Num=Num
def Wstaff(self):
for char in self.staff:
if char == int:
self.y[self.Num]+=160*int(char)
break
print(self.y)
print(self.x)
if self.Num==0 and char == 'R' and self.notetype=='Half':
self.x[self.Num]+=98
self.y[self.Num]+=59 # (51, -4)
break
print(self.y)
print(self.x)
if self.Num==0 and char == 'R' and self.notetype=='4th':
self.x[self.Num]+=83
self.y[self.Num]+=62 #(31, -4)
break
print(self.y)
print(self.x)
if self.Num==0 and char == 'R' and self.notetype==EthnoteIMG:
self.x[self.Num]+=63
self.y[self.Num]+=59 #(17, -4)
print('wstaff')
print(self.y)
print(self.x)
if self.Num==0 and char == 'R' and self.notetype=='16th':
self.x[self.Num]+=49
self.y[self.Num]+=54 #(9, -4)
break
#if Num=1 and char = 'L':
#whole note () ()
#half note () ()
#4th note () ()
#8th note () ()
#16th note () ()
def noteZ(self):
print(self.y[self.Num])
self.y[self.Num]+=(-4)*int(NoteDe[(str(self.note))])
print('noteZ')
print(self.y)
print(self.x)
def getcoord(self):
self.Wstaff()
self.Wnotetype()
self.noteZ()
print('getcoord')
print(self.y)
print(self.x)
def ExNote(self):
self.getcoord()
self.Wnotetype()
screen.blit(self.notetype, (self.x[self.Num],self.y[self.Num]))
print('exnote')
print(self.y)
print(self.x)
def Wnotetype(self):
if self.Num!=0 and self.notetype == 'EthnoteIMG':
self.x.append(self.x[self.Num]+17)
self.y.append(self.y[self.Num])
print('Wnotetype')
print(self.y)
print(self.x)
if self.Num!=0 and self.notetype == '4th': #Note(1, '0R', 'd', 'Ethnote').Exnote()
self.x[self.Num]+=31
if self.Num!=0 and self.notetype == 'Half':
self.x[self.Num]+=51
if self.Num!=0 and self.notetype == 'Whole':
self.x[self.Num]+=76.5
Note(0, '0R', 'd', EthnoteIMG).ExNote()
打印出来:
wstaff
[59]
[63]
59
noteZ
[55]
[63]
getcoord
[55]
[63]
exnote
[55]
[63]
wstaff
[114]
[126]
114
noteZ
[110]
[126]
我不明白为什么它在打印exnote [55] [63]
之后不会停止,以及为什么它会通过所有功能返回。我确定它与其他功能中的类功能有关,但我之前没有遇到任何问题。