2010/4/27 Petr Přikryl <prik...@atlas.cz>: > > Michal Vyskocil > : >Přikryl Petr > : >... > : > otázka, jestli je to vhodný název pro pojem > : > (plnohodnotný objekt). Taky se k tomu můžu postavit > : > tak, že by to nebylo vnucováno jako kodifikovaný pojem, > : > ale prostě jako srozumitelné vyjádření -- opis významu. > : > : Se slovem plnohodnotný je problém, že se to vztahuje spíše k jazyku, > : než tomu objektu. Takže při opisném použití bych asi napsal něco jako > : > : """ > : Objekty a funkce v Pythonu jsou plnohodnotné složky/elementy/... > : jazyka. Mohou být použity jako argument, či návratová hodnota funkce. > : V angličtině se označují termínem first-class object. > : """ > > No, tady nevím, jestli si rozumíme. Objekty jsou objekty (plnohodnotné). > Nemůžou být ničím jiným. Jsou to objekty z definice.
Zcela urcitě si nerozumíme. Já hovořil o definici, která je například na wikipedii http://en.wikipedia.org/wiki/First-class_object Pokud je něco v daném jazyce first-class objekt, pak jde o element jazyka splňující jisté vlastnosti. Důležité je, že v tomto kontextu se termín objekt nepoužívá ve smyslu objektu v objektovém programování, ale prostě element jazyka. Pravdou je, že ani můj opis nebyl nijak dobrý, protože právě toto motá dohromady. V případě Pythonu je potom first-class objekt prakticky všechno, dokonce i operátory, protože to jsou ve skutečnosti speciální metody objektu. I když elementy jazyků s eval definici first-class objektů splňují tak nějak aoutomaticky :-). Na druhou stranu takové C má návěští, které nejsou first-class objekty - nelze proměnné, tudíž předat funkce jako parametr, nebo vrátit jako návratovou hodnotu. Stejné je to třeba s typy - v C není možné deklarovat proměnnou takového typu, která je uložená v jiné proměnné. Jen tak pro zajímavost, existují GNU rozšíření Label as a Value [1] a Referring to a Type with typeof [2], které umožňují pracovat s návěštími a typy jako s first-class objekty (snad až na to vytváření za běhu). [1] http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Labels-as-Values.html#Labels-as-Values [2] http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Typeof.html#Typeof -- best regards Michal Vyskocil _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python