Ho una funzioneCome controllare se len è valido
def foo(bar):
#do some things
len(bar)
Se chiamo
foo(42)
viene generata un'eccezione di
TypeError: object of type 'int' has no len()
Come posso controllare se il immesso il valore può essere utilizzato con len()?
Questo non dovrebbe essere '__len__ in dir (bar)'? In ogni caso, usare 'hasattr' è meglio se si utilizza questo approccio – Daenyth
Anche un oggetto ha l'attributo' __len__', non significa che sia valido (o OP dovrebbe definire ciò che è ** valido **). Ad esempio, una classe può definire una funzione '__len__' che restituisce un' str', e passerà il test 'hasattr', ma lancia comunque l'eccezione' TypeError' quando si chiama 'len()'. Questo è esattamente ciò per cui è stata progettata la gestione delle eccezioni **, punendoli per avermi dato un input sporco. – Nier