Herní studio Hangar 13 vydalo novou Mafii. Mafia: Domovina je zasazena do krutého sicilského podsvětí na začátku 20. století. Na ProtonDB je zatím bez záznamu.
Operátor O2 má opět problémy. Jako omluvu za pondělní zhoršenou dostupnost služeb dal všem zákazníkům poukaz v hodnotě 300 Kč na nákup telefonu nebo příslušenství.
Společnost OpenAI představila GPT-5 (YouTube).
Byla vydána (𝕏) červencová aktualizace aneb nová verze 1.103 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.103 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Americký prezident Donald Trump vyzval nového generálního ředitele firmy na výrobu čipů Intel, aby odstoupil. Prezident to zdůvodnil vazbami nového šéfa Lip-Bu Tana na čínské firmy.
Bylo vydáno Ubuntu 24.04.3 LTS, tj. třetí opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.
Byla vydána verze 1.89.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Americká technologická společnost Apple uskuteční v USA další investice ve výši sta miliard dolarů (2,1 bilionu korun). Oznámil to ve středu šéf firmy Tim Cook při setkání v Bílém domě s americkým prezidentem Donaldem Trumpem. Trump zároveň oznámil záměr zavést stoprocentní clo na polovodiče z dovozu.
Zálohovací server Proxmox Backup Server byl vydán v nové stabilní verzi 4.0. Založen je na Debianu 13 Trixie.
Byla vydána nová verze 1.54.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Jan Václav.
Narážel na to, že komentátor v Quake3Arena hlásí: "two frags left, one frag left". Máš to přesně tak napsaný.
Jestli někdo ví, co se řve v QIII, tak jsem to já. Proto to tam mám napsaný.
Ale je to třeba i v Nexuizu.
PS: You are tied for the lead.
Jinak - Python všichni umíme, přejděme k věciPython všichni umíme? O tom ani nevím.
...a taky se nemusí kompilovat (pro to určitě existuje výraz, ale zrovna mě nenapadá)...interpretovaný
... python pyconfig.py >> config.h lwc seg-malloc.c+ > cdir/seg-malloc.c /bin/sh: lwc: command not found make[1]: *** [cdir/seg-malloc.c] Error 127 make[1]: Leaving directory `/home/david/compile/hmmm/toolchain/pyvm' make: *** [all] Error 2a ani s pomocí Google nedám dohromady kde to sakra seženu.
PATH=$PATH:~/bin
a znova make
, je tu ale další chyba...
gcc -c -O3 -Wall -Wno-parentheses cdir/IO.c -o objdir/IO.o cdir/IO.c:28: error: conflicting types for 'malloc' cdir/IO.c:28: error: conflicting types for 'malloc' make[1]: *** [objdir/IO.o] Error 1 make[1]: Leaving directory `/home/david/compile/hmmm/toolchain/pyvm' make: *** [all] Error 2Nějak mi to není přáno... Každopádně tam píšou, že je to otestovaný jen na x86 (asi 32bit) a že pokud to chci kompilovat na jiné architektuře, mám raději počkat na další verze...
>>> import py_compile >>> compile('test.py') Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: compile() takes at least 3 arguments (1 given) >>> compile('test.py, test.pyc') Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: compile() takes at least 3 arguments (1 given):/ podle manuálu by měl stačit jeden argument... Jde mi z toho hlava kolem.
py_compile.compile()
. Viď dokumentácia k modulom.
from py_compile import compile compile('/home/david/devel/python/test.py')Takhle je to lepší.
#! /usr/bin/env python # -*- coding: UTF-8 -*- import sys, py_compile py_compile.compile(sys.argv[1])a pro adresář:
#! /usr/bin/env python # -*- coding: UTF-8 -*- import sys, compileall compileall.compile_dir(sys.argv[1], 1)To jen kdyby to tu někdo hledal.
__init__()
nie je nič iné ako konštruktor.
Nevytvari sice objekt ve smyslu alokace pameti Narozdil od metody __new__(), ze? Neni tedy spis konstruktor toto? A dostavame se opet k tomu, co jsem rikal. Hledat analogii u oop jazyku implementovanych jinak je silne zavadejici a vede k chybnemu chapani, proto je nevhodne.Milý pane, ste trochu vedľa. Konštruktorom sa v OOP (nie len v Jave, C#, ale v OOP všeobecne) chápe funkcia, ktorá inicializuje objekt ako taký, nestará sa o nízkoúrovňové procesy. Vytvorením objektu sa potom chápe jeho vytvorenie v pamäti (new) a inicializácia (init). Ešte raz to zopakujem, jediný rozdiel oproti Jave je syntaktický: v Pythone napíšeme
= Class();
a v Jave = new Class()
, ale v oboch jazykoch vedú tieto výrazy k rovnakému procesu.
A k akému chybnému chápaniu vedie pomenovať funkciu ktorá sa stará o inicializáciu objektu? Jediné chybné chápanie, ktoré som si všimol je vaše, ale pramení zjavne z toho, že neviete, čo to konštruktor je. A to ma dosť zaráža.
Samozrejme, že v čistom OOP existujú len správy, ale Python nie je čistý OOP jazyk.
Konkrétne, pozrite si tento článok. Podstata je, že v staticky typovaných jazykoch exituje len jeden spôsob vytvorenia objektu: volaním konštruktoru, kdežto v čistých OOP stačí poslať triede (ešte nevytvorenému objektu) ľubovoľnú správu a objekt sa vytvorí popritom. AFAIK v pythone niečo takéto nie je možné, ale musí sa najprv objekt vytvoriť a až potom môžeme volať niektorú jeho metódu, i.e.:
ob = Object()
ob.show()
ale nie
ob = Object.show()
a teda v tomto ohľade je pythone takmer rovnaký ako Java, C#. Rovnako sa pritom volá konštruktor (opäť v mojom chápaní) objektu lenže v pythone sa nazýva __init__
a nie Object()
.
def x(a, b): return a+b print x(1, 2)LZE! pokud mam napriklad funkci, ktera jako parametr ocekava funkci, tak tam misto toho muzu klidne soupnout tridu. Oboji jsou to volatelne objekty a je mozne je zamenovat. Vyborne, tak si to predvedeme prakticky, treba se naucim neco noveho:
def cmpfun(a, b): if a>b: return 1 if b>a: return -1 return 0 print [1,5,9,7,5,3].sort(cmpfun)Metoda sort jako parametr ocekava funkci. Predavam funkci cmpfun, prosim o jeji nahrazeni tridou. metoda __new__ je mnohem nizkourovnovejsi nez __init__. je to spis takovej hack. Neni to hack a je na stejne urovni jako init, jen se tak casto neprekryva. Vase teorie zacina dostavat trhliny
########################################## def x(a, b): return a+b print x(1, 2) >>> class x: ... def __init__(self, a, b): ... self.c = a+b ... def __str__(self): ... return str(self.c) ... >>> print x(1, 2) 3 # i kdyz pri jinych prilezitostech by bylo potreba napr. # doplnit metodu __int__ a podobne, # ale o to v OOP v pojeti pythonu jde. muzete objekty # zamenovat. pokud rozumi pozadovanym zpravam... ########################################## >>> def cmpfun(a, b): ... if a>b: return 1 ... if b>a: return -1 ... return 0 ... >>> print [1,5,9,7,5,3].sort(cmpfun) None # predpokladam ze jste si jen neuvedomil, ze metoda sort # pracuje s puvodnim polem a myslel jste toto: # a = [1,5,9,7,5,3] # a.sort(cmpfun) # print a ###################################################### >>> class cmpfun(int): ... def __new__(cls, a = 0, b = 0): ... if a > b: return int.__new__(cls, 1) ... if a < b: return int.__new__(cls, -1) ... return int.__new__(cls, 0) ... >>> a = [1,5,9,7,5,3] >>> a.sort(cmpfun) >>> print a [1, 3, 5, 5, 7, 9] >>> ##########################################################takze sem prave prokazal, ze funkce a tridy jsou zamenitelny.... mam pocit, ze OOP v pythonu (a podobnych jazycich, napr. smalltalk) prilis nerozumite. Nikoho toti nezajima, ze se jedna o uplne jiny objekt, kdyz shodne reaguje na stejne zpravy.... > Neni to hack a je na stejne urovni jako init, jen se tak casto neprekryva. Vase teorie zacina dostavat trhliny
class A { public: int x; }; class B { public: float y; }; void f() { A* a; B* b; *a = *b; // nemozne a = (A*)b; // mozne bez jakekoli kontroly typu. // proste se nastavi ukazatel na adresu // b (obcas se to ale hodi ;)) }
print
vola metodu __str__
jak u puvodniho intu, tak i u myho objektu. takze jsou zamenitelny (v tomhle pripade)
> Stale stojim o vysvetleni toho, proc se domnivate, ze si python pletu se statickymi jazyky, i kdyz uz zacinam tusit, ze jde o nedorozumneni a ze je to kvuli tomu, ze si pod tvrzenim, ze funkce a tridy nejsou zamenitelne predstavujem kazdy neco jineho.
asi jsem se unahlil. byl to jenom takovej dojem. Kdyz sem videl jak se snazite funkce a tridy oddelovat, vzpomel sem si na Javu a kolik ma vzdycky reci QMainWindow()
v pythone neexistuje.
QMainWindow()
v skutočnosti vytvorí nový objekt typu QMainWindow
a odkaz naňho potom odovzdá ako prvý argument funkcii QMainWindow.__init__()
– takže analógiu môžeme vidieť skôr s týmto kódom Javy (C++):win = new QMainWindow();
To len aby sme zatiaľ dali veci na pravú mieru. Určite sa aj k tejto problematike autor neskôr vyjadrí.
Inak fajn článok, držím palec Díky, už asi měsíc se chystám s PyQt začít, ale nebylo dost času. Teď jsem rád, že jsem počkal
python-qt
.
Skvely serial, chtel jsem se ucit PyQt ale zatim jsem se k tomu nejak nedostal az ted . Uz jsem pridal na nej odkaz na PyCZ Wiki.
Jeste se chci zeptat: kolik dilu planujete? Co vsechno hodlate probrat?
Tak kolik dilu to nakonec bude nevim, ale ma idea je takova, ze tak do tretiho dilu bych se chtel u QT dostat k prvkum button, lineEdit, TextLabel. Samozrejme je vysvetleni signalu a slotu trosku do hloubky. V Pythonu se do tretiho dilu vysvetli tvorba vlastnich funkci a snad i trid, textovy vstup, podminky, cykly a mozna zvladnem jeste pokrocilou praci s poli :) Od tretiho dilu bych chtel, aby byla vysledkem kazdeho dilu nejaka pouzitelna aplikace. No a pri tvorbe te aplikace si pak vysvetlime nove prvky, ktere jsme pouzili. Nezavazuju se, ze tohle schema dodrzim , ale pokud to bude mozne, chtel bych, aby bylo takove.
Moc vsem dekuji za podporu . Hodne me potesila reakce na clanek
Tiskni
Sdílej: