AI 상태 공간 검색 알고리즘을 작성 중이며 검색 알고리즘을 빠르게 구현하는 데 사용할 수있는 일반 클래스가 있습니다. 서브 클래스는 필요한 연산을 정의하고 알고리즘은 나머지를 수행합니다.
여기에 내가 붙어있는 곳이 있습니다 : 부모 상태를 반복해서 다시 생성하지 않기를 원하므로 다음 함수가 있습니다.이 함수는 모든 상태에 합법적으로 적용될 수있는 작업을 반환합니다.
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
그리고 invert_op 함수는 기본적으로 throw됩니다.
예외를 잡는 것보다 함수가 정의되어 있지 않은지 확인하는 더 빠른 방법이 있습니까?
나는 dir에 존재하는 것을 확인하는 줄에 무언가를 생각하고 있었지만 그것이 옳지 않은 것 같습니다. hasattr은 getattr을 호출하고 그것이 발생하는지 확인하여 구현됩니다.
has_op = lambda obj, op: callable(getattr(obj, op, None))
hasattr(connection, 'invert_opt')
.