2011.05.01 07:45 żeby można było potem zafinalizować zmienną

W niektórych językach można zmienną zadeklarować jako finalną. Że jak się ją raz ustawi, to potem nie można jej już zmienić. A fajnie by było, jakby się dało zmienną najpierw zmienic kilka razy, a potem w pewnym momencie zafinalizować i od wtedy już nie można by jej było zmieniać. Albo może nie fajnie, ale ciekawie.

komentarze:
2011.05.02 03:12 Cosi

Można by się pokusić o zrobienie czegoś takiego za pomocą obiektu. Metody ustaw() i finalizuj(), przy czym ta druga automatycznie blokuje możliwość dalszych zmian.


2011.05.02 04:28 Piotrek

Ale w twój sposób nie zapobiegnę temu, żeby ktoś w przyszłości zrobił \"a = new Klasa()\". Przynajmniej w znanych mi językach.


2011.05.02 04:42 Piotrek

No właśnie. W sumie to ciekawe. W takim Pythonie tak dużą mamy kontrolę nad tym, jak działają obiekty, a niewielką nad tym, jak działają zmienne (nazwy). A może ja czegoś nie wiem? Może dałoby się zastąpić pewnemu modułowi standardową przestrzeń nazw przestrzenią własną, z zaimplementowanymi zasadami typu \"jak powiem hop, to tej nazwy nie będzie już można zmieniać\".


2011.05.02 14:44 Cosi

Zmieniać podstawowe elementy języka można w Rubim, ale niestety nie w Pythonie :-(

Ale myślałem chwilkę i wymyśliłem. Można nieco zmodyfikować mój poprzedni pomysł: zamiast dawać jedną zmienną w jednym obiekcie, można wszystkie wrzucić do tego samego obiektu, który byłby konstruowany raz, przy starcie programu. Wtedy wystarczy zmodyfikować magiczną metodę __setattr__ jego klasy i dodać do niej warunek zapobiegający modyfikowaniu właściwości obiektu po zafinalizowaniu.

PS. Albo nawet lepszy pomysł: nie jeden obiekt, tylko obiekt typu singleton - wtedy nie będzie możliwości nadpisania go.




ksywa:

tu wpisz cyfrę cztery: (to takie zabezpieczenie antyspamowe)

komentarze wulgarne albo co mi się nie spodobają będę kasował


powrot na strone glowna

RSS