Python deskriptor protokol analog v jiných jazycích?

hlasů
8

Je tam něco jako popisovače protokolu Python realizován v jiných jazycích? Vypadá to, že pěkný způsob, jak zvýšit modularitu / zapouzdření bez nadýmání realizaci svou třídou obsahující, ale nikdy jsem neslyšel o něco podobného v jiných jazycích. Je pravděpodobné, že chybí od jiných jazyků vzhledem k vyhledávání nad hlavou?

Položena 29/08/2008 v 08:24
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
4

Jsem neslyšel o přímý ekvivalent jeden. Dalo by se pravděpodobně dosáhnout stejného efektu s makry, a to zejména v jazyce jako Lisp, který má velmi silné makra.

Nebyl bych vůbec překvapen, když spuštění dalších jazyků zahrnout něco podobného, ​​protože to je tak silný.

Odpovězeno 29/08/2008 v 08:39
zdroj uživatelem

hlasů
0

Ruby a C # a to jak snadno vám umožní vytvořit přístupové určením metod kariérista / nastavovací pro atribut, podobně jako v Pythonu. Nicméně, toto není navržen tak, aby přirozeně umožní psát kód pro tyto metody v jiné třídě tak, že Python umožňuje. V praxi, nejsem si jistý, jak moc je to důležité, protože pokaždé, když jsem viděl atribut definovaný prostřednictvím protokolu popisovač jeho byla provedena ve stejné třídě.

EDIT: zašít mé dyslexii (čímž myslím neopatrný čtení). Z nějakého důvodu jsem vždy číst „deskriptor“ jako „malíř“ a naopak, a to i když jsem ten psaní oba. Nechám můj post neporušená, protože má platné informace, i když informace, které nemá absolutně nic společného s otázkou.

Pod pojmem „malíř“ sám o sobě je vlastně jméno designového vzoru popsaného v proslulé „návrhových vzorů“ kniha. Wikipedia článek obsahuje mnoho příkladů v různých programovacích jazycích použití dekoratérka: http://en.wikipedia.org/wiki/Decorator_pattern

Nicméně, malíři v tomto článku objektově orientované; mají tříd prováděcí předdefinované rozhraní, které umožňuje jiné existující třídy chovají odlišně nějak atd Python decorators jednat ve funkčním způsobem nahradí funkci za běhu s jinou funkcí, která vám umožní efektivně změnit / vyměnit tuto funkci, vložte kód, atd.

To je známá ve světě jako Java Aspekt-orientované programování a AspectJ Java kompilátor umožňuje provádět tyto druhy věcí a kompilace AspectJ kód (který je podmnožinou Javy) do Java bytecode.

Nejsem dostatečně obeznámen s C # nebo Ruby vědět, jaké bude jejich verze dekoratérů.

Odpovězeno 08/09/2008 v 00:31
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more