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.
powrót na stronę główną
RSS