Comment fonctionne len sur Python?Comment ça marche?
Regardez cet exemple:
class INT(int):
pass
class STR(str):
def __len__(self):
return INT(42)
q = STR('how').__len__()
print q, type(q)
q = len(STR('how'))
print q, type(q)
La sortie est:
42 <class '__main__.INT'>
42 <type 'int'>
Comment puis-je gérer si len renvoie une instance INT?
Les réponses suggèrent que la seule solution est prépondérant len
Ceci est ma mise en œuvre alternative. Cela ne semble pas très nuisible.
original_len = len
def len(o):
l = o.__len__()
if isinstance(l, int):
return l
original_len(o)
Je ne veux pas faire ça. Pourquoi pensez-vous que c'est une bonne idée? – ironfroggy
Je suis d'accord avec ironfroggy. Qu'est-ce que vous essayez réellement d'accomplir? Comment votre sous-classe int diffère-t-elle de int? – mzz
Bien sûr, la classe INT dans l'exemple était juste un exemple. –