Portál AbcLinuxu, 4. listopadu 2025 02:11
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 2
Není 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.