Portál AbcLinuxu, 10. května 2025 19:04
a = 26 b = len(a) print(b) # Proč nedostanu výsledek 2 ?Místo toho dostanu chybu TypeError: object of type 'int' has no len() kterou nevím jak odstranit. Díky
Řešení dotazu:
a = 26 b = len(str(a)) print(b) # Výsledek je 2U int nelze použít len(), ale převodem na textový řetězec (str(a)) dostaneš '26' a tam už můžeš využít len(), což ti dá počet znaků ~ počet cifer. U desetinných čísel to samozřejmě započítá i desetinnou tečku.
class mujint(int): def __len__(self): return len(str(self)) a = mujint(26) print(len(a)) # Vypíše 2Není to úplně ideální, ale jen tak pro informaci.
__init__
se volá při inicializaci objektu, v tomto případě při a = mujint(26)
. A když použiješ na něco len()
, tak se python podívá, jestli má objekt definovanou metodu __len__
, když ano, tak ji zavolá. Těchto metod s podtržítky je více a pěkně sepsáno je to tady.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.