Diskuze: Adresa v pamäti <__main__.Kniha object at 0x000001DAFB610810>

Člen

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Pustil jsem to pres https://www.online-python.com/ a tvuj program zobrzuje seznam
knih, vsechno to zvladne ten print.
A ted je otazkou, proc to tobe nejde nebo, ceho chces docilit jineho?
main
Nazov: Nazov1, Autor: Autor1, Rok vydania: 1998, ISBN: 123-456-789, Zaner: Krimi
Nazov: Nazov2, Autor: Autor2, Rok vydania: 1997, ISBN: 123-456-779, Zaner: Krimi
Nazov: Nazov3, Autor: Autor3, Rok vydania: 1996, ISBN: 123-456-799, Zaner: Krimi
[<__main__.Kniha object at 0x7fb40b2f0f10>, <__main__.Kniha object at 0x7fb40b2f0a90>, <__main__.Kniha object at 0x7fb40b284220>]
** Process exited - Return Code: 0 **
Press Enter to exit terminal
Mozna hledas zpusob, jak ten sesnam prevest na str jinak nez pres print?
google = py format array list dictionary to str
https://www.simplilearn.com/…ng-in-python
my_list = ["apple", "banana", "cherry"]
result = ", ".join([item.upper() for item in my_list])
print(result)
my_list = ['apple', 'banana', 'orange']
my_string = ''
for i, fruit in enumerate(my_list):
my_string += str(i) + ': ' + fruit + ', '
# Remove the trailing comma and space
my_string = my_string[:-2]
print(my_string)
Vždyť to tam píše naprosto jasně.
Chce volat metodu zobrazenie_vsetkych_knih() třídy Kniznica pomocí vytvořeného objektu kniznica1 který je instancí třídy Kniznica, aby mohl vypsat všechny záznamy, které uvnitř kniznica1 má.
Aha, ja si nevsiml, ze tam ma pred tim dalsi printy. No, tak to sem psal, pouzil bych ty peiklady z google, tam je to i s tim __str__. Jako clovek, ktery py neovlada, bych pouzil cyklus, jako v jinem jazyce a na __STR__ bych se vykaslal.
def i2(self, k): # to bych nedaval do kniha, protoze se to pribali do kazde nova kniha a zabira pamet (ale chapu, ze se to lepe upravuje na jednom miste, data o knize)
return f"Nazov: {k.nazov}, Autor: {k.autor}, Rok vydania: {k.rok_vydania}, ISBN: {k.ISBN}, Zaner: {k.zaner}"
def z2(self):
result = [];
for item in self.zoznam_knih:
result.append(self.i2(item))
return "\n".join(result)
# ...
print(kniznica1.z2())
s tim str je to mozna jasnejsi tady https://stackoverflow.com/…-using-print
>>> class Test:
... def __init__(self):
... self.a = 'foo'
... def __repr__(self):
... return "Test()"
... def __str__(self):
... return "member of Test"
...
>>> t = Test()
>>> t
Test()
>>> print(t) # pri printu se formatuje ta class na str pomoci te __str__ automaticky
# coz je sice sikovne, ale ve tvem pripade pri 1.000.000 knihach budes
# zabirat milionkrat pamet protoze v kazde knize budes mit to formatovani pridane
# ale, da se to pouzit treba na mensi polozky, rozhodne ne databazoveho typu
member of Test
result = ", ".join([item.upper() for item in my_list])
# jednoradkove pravdepodobne jekak takto, ale PY neznam, nevim, co to udela :)
return "\n".join([self.i2(item) for item in self.zoznam_knih])
# result = [];
# for item in self.zoznam_knih:
# result.append(self.i2(item))
# return "\n".join(result)
class Kniha:
def __init__(self, nazov, autor, rok_vydania, ISBN, zaner):
self.nazov = nazov
self.autor = autor
self.rok_vydania = rok_vydania
self.ISBN = ISBN
self.zaner = zaner
def info_o_knihe(self):
return f"Nazov: {self.nazov}, Autor: {self.autor}, Rok vydania: {self.rok_vydania}, ISBN: {self.ISBN}, Zaner: {self.zaner}"
class Kniznica:
def __init__(self):
self.zoznam_knih = []
def zobrazenie_vsetkych_knih(self):
for kniha in self.zoznam_knih:
print(kniha.info_o_knihe())
def pridaj_knihu(self, kniha):
self.zoznam_knih.append(kniha)
def main():
kniznica = Kniznica()
kniznica.pridaj_knihu(Kniha("Nazov1", "Autor1", 1998, "123-456-789", "Krimi"))
kniznica.pridaj_knihu(Kniha("Nazov2", "Autor2", 1997, "123-456-779", "Krimi"))
kniznica.pridaj_knihu(Kniha("Nazov3", "Autor3", 1996, "123-456-799", "Krimi"))
kniznica.zobrazenie_vsetkych_knih()
if __name__ == "__main__":
main()
s tim str by to prave bylo zajimavejsi
class Kniha:
def __init__(self, nazov, autor, rok_vydania, ISBN, zaner):
self.nazov = nazov
self.autor = autor
self.rok_vydania = rok_vydania
self.ISBN = ISBN
self.zaner = zaner
# def info_o_knihe(self):
# def __str__(self):
return f"Nazov: {self.nazov}, Autor: {self.autor}, Rok vydania: {self.rok_vydania}, ISBN: {self.ISBN}, Zaner: {self.zaner}"
#...
# print(kniha.info_o_knihe())
print(kniha)
Zobrazeno 10 zpráv z 10.