Python'da sık sık "izin istemek" yerine "af dilemenin" (istisna yakalama) daha iyi olduğunu duyuyorum (tip / durum kontrolü). Python'da ördek yazmaya zorlama açısından, bu
try:
x = foo.bar
except AttributeError:
pass
else:
do(x)
daha iyi veya daha kötü
if hasattr(foo, "bar"):
do(foo.bar)
else:
pass
performans, okunabilirlik, "pitonik" veya başka bir önemli faktör açısından?
hasattr
Dahili olarak tam olarak dene / yakala ile işitildiğini hatırlıyorum . Doğru olup olmadığından emin değil ... (mülklere farklı davranacak, değil mi? Belki de düşünüyorum getattr
..)
hasattr
, C-API eşdeğerini kullanır getattr
( True
başarılı olursa döndür , False
yoksa), ancak C'deki istisnaları ele almak çok daha hızlıdır.