Hirdetés
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Távozik az Apple vezérigazgatója
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Így spórolhat az Apple az iPhone 18 kijelzőin
- iPhone topik
- Xiaomi 15T Pro - a téma nincs lezárva
- Huawei Watch D2 - nyomás utána!
- Külföldi prepaid SIM-ek itthon
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- Kisebb lett a Honor MagicPad3 Pro
Ú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
Hirdetés
- Dell Latitude 5410 - 14" FHD touch, Core i5 10310U, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- Acer Nitro ANV15-51 15.6" FHD IPS i5-13420H RTX 4050 16GB 500GB NVMe magyar vbill gar
- Vivobook S 16 S5606MA 16" 3K OLED Ultra 7 155H 16GB 256GB NVMe magyar vbill IR kam gar
- Be Quiet! venti bazár
- IdeaPad Flex 5 14ALC05 2-in-1 14" FHD IPS érintő Ryzen 5 5500U 8GB 256GB NVMe magyar bill gar
- GAMER PC! Ryzen 7600X / RTX 5070 / 32GB DDR5 / 500GB NVMe / 850w Gold / BeszámítOK !
- Eladó új állapotban levő Redmi Note 10S 6/128GB szürke / 12 hónap jótállás
- RAPOO 7100P 1000DPI optikai rádiós 5GHz egér
- GAMING PC! ULTRA 5 225 / RTX 5060 / 16GB DDR5 / 512GB NVMe / 550W Gold 80 Plus!
- HP ProDesk 600 G2 MT, i7-6700,8GB DDR4,256GB SSD,DVD-RW,WIN11
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


