私は大学向けのこのプロジェクトを持っていますが、教師から提供されたテストファイルでいくつかのエラーが発生しています。
それらのほとんどはこれに関連しています。たとえば、次のようにします。
caminho(posicao(0,0)).caminho_junta_posicao('este').caminho_origem()
戻り値:
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
builtins.AttributeError: 'NoneType' object has no attribute 'caminho_origem'
ただし、これを行う:
c1 = caminho(posicao(0,0))
c1.caminho_junta_posicao('este')
c1.caminho_origem()
エラーは返されませんが、意図した位置が返されます。
そして、なぜそれが起こるのか理解できません。他の人との私の問題は非常に似ているので、以下は例の両方のクラスを定義するコードです。どんな助けでも本当にありがたいです。ありがとう。
class posicao:
def __init__(self,l,c):
self.posicao=(l,c)
def posicao_linha(self):
return self.posicao[0]
def posicao_coluna(self):
return self.posicao[1]
def posicao_igual(self,p2):
return self.posicao[0] == p2.posicao_linha() and self.posicao[1]\
== p2.posicao_coluna()
def posicao_relativa(self,d):
if d=='norte':
return posicao(self.posicao_linha()-1,self.posicao_coluna())
elif d=='sul':
return posicao(self.posicao_linha()+1,self.posicao_coluna())
elif d=='este':
return posicao(self.posicao_linha(),self.posicao_coluna()+1)
elif d=='oeste':
return posicao(self.posicao_linha(),self.posicao_coluna()-1)
class caminho:
def __init__(self,p):
self.caminho = [p]
def caminho_junta_posicao(self,d):
p = self.caminho[-1]
self.caminho = self.caminho + [p.posicao_relativa(d)]
def caminho_origem(self):
return self.caminho[0]
def caminho_destino(self):
return self.caminho[-1]
def caminho_antes_destino(self):
return self.caminho[:-1]
def caminho_apos_origem(self):
return self.caminho[1:]
def caminho_comprimento(self):
return len(self.caminho)
def caminho_contem__ciclos(self):
for p in range(len(self.caminho)):
for p2 in self.caminho[p:]:
if p2.posicao_igual(self.caminho[p]):
return True
return False
def caminho_elimina_ciclos(self):
caminho = self.caminho
if self.caminho_contem_ciclos():
for p in caminho:
for p2 in caminho[caminho.index(p):]:
if p.posicoes_iguas(p2):
caminho = caminho[:index(p)]+caminho[index(p2):]