Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 8. diel - Kopírovanie objektov v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:28.12.2023 18:06

A co kopie prostým přiřazením? To se nepoužívá?

class Uzivatel:
    def __init__(self, jmeno, vek):
        self.jmeno = jmeno
        self.vek = vek

pat = Uzivatel("Pat", 30)

mat = pat

print(pat.__init__)
print(mat.__init__)
print(mat.jmeno)
print(mat.vek)

Vypíše:

<bound method Uzivatel.__init__ of <__main__.Uzivatel object at 0x000001F5E29­DEE50>>
<bound method Uzivatel.__init__ of <__main__.Uzivatel object at 0x000001F5E29­DEE50>>
Pat
30

Editované
Avatar
Karel Zaoral
Člen
Avatar
Odpovedá na Jakub Ježek
Karel Zaoral:28.12.2023 18:14

Ahoj, přečti si prosím znovu odstavec Kopírování objektů v lekci. Je tam odpověď na tvou otázku:-)
Vložení reference na objekt do proměnné(proměn­ných) není kopírování objektu.

Avatar
Lenka Chalupová:12.2.2024 11:48

Mohl by mi někdo prosím vysvětli jaký je rozdíl mezi těmito 2 zápisy?Děkuji.

def __str__(self):
       return str(f"Kostka s {self._pocet_sten} stěnami.")

   def __str__(self):
       return f"Kostka s {self._pocet_sten} stěnami."
Avatar
Karel Zaoral
Člen
Avatar
Odpovedá na Lenka Chalupová
Karel Zaoral:12.2.2024 13:08

Ahoj Lenko, obě metody __str__() vrací stejný řetězec a pro výslednou funkcionalitu objektu není mezi těmito dvěma přístupy prakticky žádný rozdíl.
Druhý zápis je však obecně preferovaný pro svou přímočarost a efektivitu, protože nepoužívá zbytečné volání funkce str() na řetězec, který už je řetězcem. Můžeš ho však použít, když chceš pro jiné čtenáře tvého kódu zdůraznit, že vracíš typ string.

Avatar
Odpovedá na Karel Zaoral
Lenka Chalupová:12.2.2024 16:31

Díky za odpověď. V tom případě nechápu proč se v jedné lekci použije méně preferovaný přístup a v druhé ten více. Dvě po sobě následující lekce. Je to zbytečně matoucí, někdo by si měl uvědomit, že jsme začátečníci a když do nás budete valit 10 různých stylů jak psát kod, budeme v tom mít akorát guláš. Chápu, že python je v tomto benevolentní a všichni se zároveň v praxi setkám s různými styly, a vybereme si ten který nám vyhovuje, ale ve výuce by bylo vhodné dodržet určitou integritu.Děkuji

Avatar
DarkCoder
Člen
Avatar
DarkCoder:12.2.2024 19:19
def __str__(self):
       return str(f"Kostka s {self._pocet_sten} stěnami.")

Můžeš ho však použít, když chceš pro jiné čtenáře tvého kódu zdůraznit, že vracíš typ string.

Nic takového se nedělá! Nebudeme provádět konverzi argumentů na řetězec který už je řetězcem. U už tak pomalého Pythonu by to bylo naprosto směšné provádět navíc něco co absolutně nemá žádný význam.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Jan Všetíček:8.5.2024 17:21

Tahle lekce je spíš takovej nástřel tématu, ale pokud se chceme něco dozvědět, musíme jít jinam.

Avatar
Mirek Benešovský:22.7.2024 17:27

Jen bych si dovolil podotknout, že formulace v 1. odstavci "Z předchozích lekcí už víme, že když máme dvě reference na stejný objekt a změníme jednu, druhá se změní také, protože obě reference ukazují na stejnou paměťovou oblast.", se mně zdá nesprávná, neboř tyto dvě reference jsou nezávislé paměťové prvky a když se změní jeden z nich, tak druhý zůstává nezměněn. Kopírování podle mě slouží k tomu, abych získali nová data objektu a na ně novou nezávislou referenci.

Avatar
Jean Kocman :2.11.2024 21:31

totální zmatení.. ale uplně..

Avatar
Jan černý
Člen
Avatar
Jan černý:22. februára 21:04

chápu správně, že funkce copy() a deepcopy() tedy není v pythonu ale musím jí vyvolat přes modul copy a zavolat funkce copy() a deepcopy()

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 15.