Je suis en train d'écrire un algorithme de recherche dans l'espace d'état de l'IA, et j'ai une classe générique qui peut être utilisée pour implémenter rapidement un algorithme de recherche. Une sous-classe définirait les opérations nécessaires, et l'algorithme ferait le reste.
C'est là que je suis bloqué : Je veux éviter de régénérer l'état parent encore et encore, donc j'ai la fonction suivante, qui renvoie les opérations qui peuvent être légalement appliquées à n'importe quel état :
def get_operations(self, include_parent=True):
ops = self._get_operations()
if not include_parent and self.path.parent_op:
try:
parent_inverse = self.invert_op(self.path.parent_op)
ops.remove(parent_inverse)
except NotImplementedError:
pass
return ops
Et la fonction invert_op lance par défaut.
Existe-t-il un moyen plus rapide de vérifier si la fonction n'est pas définie que d'attraper une exception ?
Je pensais à quelque chose comme vérifier la présence dans le répertoire, mais cela ne semble pas correct. hasattr est implémenté en appelant getattr et en vérifiant s'il lève, ce qui n'est pas ce que je veux.