0
from node import *
from copy import deepcopy
import pygame
from PIL import Image

def buscar_solucion(inicio, solucion):

    visitados=[]
    nodo_i=Nodo(inicio)

    while nodo_i.get_datos() != solucion:

        nodo_i = deep_search(nodo_i,solucion,visitados)

    moves=[]
    moves.append(solucion)

    while nodo_i.get_padre() != None:
        pater=nodo_i.get_padre()
        moves.append(pater.get_datos())
        nodo_i=pater
    moves.reverse()
    print moves

 def operaciones_h(dades):
   r=[]
   i=0
   while dades[i] != dades[-1]:
      s=deepcopy(dades)
      s[i]=dades[i+1]
      s[i+1]=dades[i]
      r.append(Nodo(s))
      i+=1
   return r

def deep_search(ini,sol,visit):

    visit.append(ini.get_datos())

    if ini.get_datos() == sol:
        return ini

    else:
        hijos=operaciones_h(ini.get_datos())
        for hijo in hijos:
            if hijo.get_datos() not in visit:
                hijo.set_padre(ini)
                return deep_search(hijo,sol,visit)

私が得ている問題は、 Class のインスタンスを作成するときの 14 行目Nodoです。私が得るエラーは次のとおりです。

AttributeError: 'NoneType' object has no attribute 'get_datos'

クラスは、 というファイルで定義されますnode.py。問題はインポートにあるのでしょうか?またはインスタンスを定義するとき?

4

2 に答える 2

0

場合によってはコールが返されますnodo_i = deep_search(nodo_i,solucion,visitados)None内部deep_searchには次のコードがあります。

else:
    hijos=operaciones_h(ini.get_datos())
    for hijo in hijos:
        if hijo.get_datos() not in visit:

operaciones_h空のリストを返す場合、またはステートメントにhijo一致する値がない場合、関数は戻り、例外が表示されます。ifNone

于 2013-04-17T09:20:19.173 に答える