Új hozzászólás Aktív témák
-
maser
tag
válasz
pigster
#1803
üzenetére
Mint ahogy már feljebb is írták:
tmp =str(self.kartyak[0:1])
Ez egy 1 elemű tömböt hoz létre, és nem csak egy elemet ad vissza.Amikor pedig egy tömböt sztringgé alakítasz, akkor a tömb elemeit próbálja reprezentálni.
Ilyenkor az objektum__repr__függvényét hívja meg.Írd felül a
__repr__függvényt, és akkor menni fog! -
cousin333
addikt
válasz
pigster
#1824
üzenetére
"There's been a number of complaints about the choice of the name 'decorator' for this feature. The major one is that the name is not consistent with its use in the GoF book [11]. The name 'decorator' probably owes more to its use in the compiler area -- a syntax tree is walked and annotated. It's quite possible that a better name may turn up." [link]
Ilyen az élet...

-
cousin333
addikt
válasz
pigster
#1822
üzenetére
Alapvetően jól látod.
"A @decorator_func a decorated_func = decorator_func(func_needs_decorator) -val egyenértékű (állítólag)"
Nem egészen. A
@decorator_funcaz tudtommal afunc_needs_decorator = decorator_func(func_needs_decorator)
sorral egyenértékű, tehát nem véletlen, hogy "felülírja" az eredeti függvényedet (legalábbis az aktuális alkalmazásban), de ez az írásmód eleve csak egy "syntactic sugar" a fent említett lépésre. Különösen akkor jön jól, ha mondjuk több dekorátort is használni kéne egyszerre.A dekorátorokról, működésükről, használatukról itt van egy alapos cikk: [link]. Azért linkeltem, mert a hozzászólások között konkrétan felteszik ugyanazt a kérdést, amit te. A választ idézve:
"The whole point of decorators is to modify the behavior of the function through a wrapper so we don't have to actually modify the function. The function is not permanently modified; the behavior changes only when it's decorated."
Gyakorlatilag egy mások által készített függvényt ki tudsz egészíteni anélkül, hogy hozzá kéne nyúlnod. Vagy az alap függvényedet általánosabban írhatod meg, és az aktuális felhasználás során dekorátorokkal specifikálhatod. Mindezt egy átlátható szintaxissal. Ha meg mindkettő funkcionalitására szükséged van, még mindig ott az első módszer.
-
kovisoft
őstag
válasz
pigster
#1819
üzenetére
Igen, az x objektum stringgé konvertálásakor (pl. str(x), print("%s" % x), stb) az __str__ metódus hívódik meg, ezt kell felülírnod, ha saját olvasható formázást akarsz. Ha az __str__ nincs definiálva, akkor a __repr__ hívódik meg. Ha ez sincs definiálva, akkor is van egy alapértelmezett reprezentáció, amit már te is láttál ebben a példádban:
<kartya.Kartya object at 0x000002AE6652D860> -
cousin333
addikt
válasz
pigster
#1814
üzenetére
Ezzel már én is megjártam, és szerintem is jobb lenne, ha így működne, de a Zen of Python szerint:
"Explicit is better than implicit."
-
KEAN
tag
válasz
pigster
#1803
üzenetére
Szia!
Ez az __str__ függvény többek közt akkor hívódik, amikor a print utasítással (vagy függvénnyel, ha python3.x-ről beszélünk) "hajtod" meg a dolgokat. Tehát a
print self.kartyak[0]működne a dolog.
A másik, hogy mindenhol a "slicingot", [0:1] használod, ami egy listát ad vissza, nem pedig magát az objektumot.
Ha mindenképpen szükséged van valami hasonló funkcionalitásra, ami "print nélkül" is visszaadja a "string értéket", akkor írj valami get_string_value() függvényt, ami pont azt csinálja, mint az __str__ és hívd azt amikor szükség van rá. -
kovisoft
őstag
válasz
pigster
#1803
üzenetére
Ha a kartyak tömb 0. elemére akarsz hivatkozni, akkor így hivatkozz rá: kartyak[0], mert ha kartyak[0:1] -et írsz, akkor ez nem egy elem, hanem egy rész-tömb lesz, ami csak a 0. elemet tartalmazza. Ez látszik is abból, hogy ha kiíratod, akkor szögletes zárójelek közé teszi.
Új hozzászólás Aktív témák
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen okostelefont vegyek?
- Home server / házi szerver építése
- sziku69: Szólánc.
- Vicces képek
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Filmvilág
- Ilyen olcsó sem volt még egy Apple notebook
- Samsung Galaxy S23 Ultra - non plus ultra
- További aktív témák...
- iPhone 13 mini 128GB Green -1 ÉV GARANCIA - Kártyafüggetlen, MS4052, 94% Akkumulátor
- Dell Latitude 5430 14" Touchscreen i5-1235U 16GB 512GB 1 év garancia
- AKCIÓS PRECÍZIÓS KÉSZÜLÉK! 7560 i9-11950H 32GB RAM 1TB SSD Nvidia RTX A3000 6GB 1 év gar
- Gamer PC-Számítógép! Csere-Beszámítás! I7 7700K / RTX 2080 / 16GB DDR4 / 480GB SSD
- HP EliteBook 840 G7 14" i5 10210u, 16GB RAM, SSD, jó akku, számla, 6 hó gar
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

