IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 7. 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
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é 28.12.2023 18:08
 
Odpovedať
28.12.2023 18:06
Avatar
Karel Zaoral
Člen IT Redactor Gang
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.

 
Odpovedať
28.12.2023 18:14
Avatar
Lenka Chalupová:12. februára 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."
 
Odpovedať
12. februára 11:48
Avatar
Karel Zaoral
Člen IT Redactor Gang
Avatar
Odpovedá na Lenka Chalupová
Karel Zaoral:12. februára 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.

 
Odpovedať
12. februára 13:08
Avatar
Odpovedá na Karel Zaoral
Lenka Chalupová:12. februára 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

 
Odpovedať
12. februára 16:31
Avatar
DarkCoder
Člen
Avatar
DarkCoder:12. februára 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ť
12. februára 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. mája 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.

 
Odpovedať
8. mája 17:21
Avatar
Mirek Benešovský:22. júla 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.

 
Odpovedať
22. júla 17:27
Avatar
Jean Kocman :2. novembra 21:31

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

 
Odpovedať
2. novembra 21:31
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.

Zatiaľ nikto nevložil komentár - buď prvý!