NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 7 - Kopírování objektů v Pythonu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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

Editováno 28.12.2023 18:08
 
Odpovědět
28.12.2023 18:06
Avatar
Karel Zaoral
Člen
Avatar
Odpovídá 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.

 
Odpovědět
28.12.2023 18:14
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."
 
Odpovědět
12.2.2024 11:48
Avatar
Karel Zaoral
Člen
Avatar
Odpovídá 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.

 
Odpovědět
12.2.2024 13:08
Avatar
Odpovídá 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

 
Odpovědět
12.2.2024 16:31
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.

Odpovědět
12.2.2024 19:19
"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.

 
Odpovědět
8.5.2024 17:21
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.

 
Odpovědět
22.7.2024 17:27
Avatar
Jean Kocman :2.11.2024 21:31

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

 
Odpovědět
2.11.2024 21:31
Avatar
Jan černý
Člen
Avatar
Jan černý:22. února 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()

 
Odpovědět
22. února 21:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.