Diskuze: Tvorba objektů podle řetězce
Tvůrce
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
OPERACE = [Plus, Minus, Deleno]
operatory = {o.znak: o for o in OPERACE}
objekty = [operatory[r] for r in retezec]
# nebo
objekty = list(map(operatory.get, retezec))
A protože jsi v Pythonu, tak většinou není důvod, proč dědit od
nějakého společného předka.
To jsou neřesti statických jazyků, Python nemá statické definice
kontraktů.
Když už bys mermomocí chtěl mít společnost třídu, je v tom případě
lepší mít jen jednu třídu Operator a zacházet s jejíma instancema.
Předseda má pravdu, ty jsi asi chtěl něco jako pythoní switch.
operatory = {Plus.znak: Plus,
Minus.znak: Minus,
...
}
Použití:
minus = operatory["-"]()
No, díky za snahu, omlouvám se za zbytečný dotaz a za ztracený čas. Nakonec jsem našel perfektní věc:
class Operator:
pass
class Plus(Operator):
pass
class Minus(Operator):
pass
print(Operator.__subclasses__())
Ta metoda __subclasses__ je to, co jsem hledal
Zajímavé je, že mi ji IDLE v
našeptávači neukázalo.
Tohle nedělej, tohle použití tříd není dobré a při čemkoliv
složitějším to začne zlobit.
Lepší je jedna třída s instancema.
class Operator:
def __init__(self, code):
self.code = code
def __repr__(self):
return self.code
operators = [Operator('+'), Operator('-'), Operator('*')]
print(operators)
# nebo
operators = [Operator(i) for i in '+-*']
print(operators)
No, každý operátor má bohužel jinou metodu. Každopádně díky za tip do budoucna.
No a? Jsi v pythonu, funkce je first-class citizen, je to o to jednodušší, pokud je to jedna metoda.
Tady jsi na devbooku, tady máme rádi OOP 
Ale vážně, Ondřeji, nedělej věci komplikovaně, když je můžeš
dělat jednoduše.
To je velmi oficiální doporučení:
https://www.youtube.com/watch?…
Zobrazeno 10 zpráv z 10.
