Bir AI durum uzayı arama algoritması yazıyorum ve bir arama algoritmasını hızlı bir şekilde uygulamak için kullanılabilecek genel bir sınıfım var. Bir alt sınıf, gerekli işlemleri tanımlar ve algoritma gerisini halleder.
Burada sıkışıp kaldığım yer: Ebeveyn durumunu tekrar tekrar oluşturmaktan kaçınmak istiyorum, bu nedenle herhangi bir duruma yasal olarak uygulanabilecek işlemleri döndüren aşağıdaki işleve sahibim:
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
Ve invert_op işlevi varsayılan olarak atar.
Fonksiyonun tanımlanıp tanımlanmadığını kontrol etmenin bir istisna yakalamaktan daha hızlı bir yolu var mı?
Dir de şimdiki zamanı kontrol etme satırlarında bir şeyler düşünüyordum, ama bu doğru görünmüyor. hasattr getattr aranarak ve yükselip yükselmediğine bakılarak gerçekleştirilir ki bu benim istediğim şey değil.
has_op = lambda obj, op: callable(getattr(obj, op, None))
hasattr(connection, 'invert_opt').