Thread View: pl.comp.lang.python
3 messages
3 total messages
Started by Slominski T
Mon, 06 Jul 2009 17:52
zmiana obiektu na inny
Author: Slominski T
Date: Mon, 06 Jul 2009 17:52
Date: Mon, 06 Jul 2009 17:52
13 lines
1712 bytes
1712 bytes
witam czy w pythonie (w tej chwili 3.0) obiekt może sam siebie podmienić na inny? Próbowałem z przypisaniem do self i self.__class__, owszem, działało ale tylko w obrębie danej metody. i czy istnieje jakiś sposób, żeby uzyskać listę wszystkich referencji do danego obiektu? i ewentualnie je zmanipulować jakoś? Moje doświadczenia z pythonem są krótkie i czysto hobbystyczne, dlatego proszę o wyrozumiałość ;) Pozdrawiam Tomasz Slominski
Re: zmiana obiektu na inny
Author: Rob Wolfe
Date: Mon, 06 Jul 2009 20:13
Date: Mon, 06 Jul 2009 20:13
55 lines
2478 bytes
2478 bytes
Slominski T <tomasz.slominski@gmail.com> writes: > witam > > czy w pythonie (w tej chwili 3.0) obiekt może sam siebie podmienić na > inny? Zasadniczo obiekt >>> class MojaKlasa: ... def __init__(self, x): ... self.x = x ... >>> moj_obiekt = MojaKlasa(100) to taki twór, który posiada: a) unikalną i niezmienną tożsamość >>> id(moj_obiekt) 3082205452 b) typ, który można zmieniać w pewnych okolicznościach [1]_ >>> type(moj_obiekt) <class '__main__.MojaKlasa'> >>> moj_obiekt.__class__ <class '__main__.MojaKlasa'> c) jakąś zawartość, którą oczywiście też można zmieniać >>> moj_obiekt.x 100 > Próbowałem z przypisaniem do self i self.__class__, owszem, > działało ale tylko w obrębie danej metody. Z powyższej defninicji wynika, że przypisanie do `self` nie ma większego sensu, bo tożsamości obiektu zmienić nie można. Przypisanie do `self.__class__` może mieć sens. Na tym się opiera np, implementacja wzorca stanu w Pythonie [2]_. > i czy istnieje jakiś sposób, żeby uzyskać listę wszystkich referencji > do danego obiektu? i ewentualnie je zmanipulować jakoś? http://docs.python.org/3.1/library/gc.html?highlight=get_referrers Nie wiem co chciałbyś zrobić, ale od razu zapala mi się czerwona lampka pod tytułem "wskaźniki na komórkę pamięci". W Pythonie takie coś nie istnieje i nie można magicznie podmienić adresu referencji. RW .. [1] http://article.gmane.org/gmane.comp.python.general/427452 .. [2] http://www.ubookcase.com/book/Oreilly/Python.Cookbook.2nd.edition/0596007973/pythoncook2-chp-6-sect-11.html
Re: zmiana obiektu na inny
Author: Slominski T
Date: Tue, 07 Jul 2009 11:51
Date: Tue, 07 Jul 2009 11:51
20 lines
2058 bytes
2058 bytes
On Jul 6, 10:13 pm, Rob Wolfe <r...@smsnet.pl> wrote: > Slominski T <tomasz.slomin...@gmail.com> writes: > > i czy istnieje jakiś sposób, żeby uzyskać listę wszystkich referencji > > do danego obiektu? i ewentualnie je zmanipulować jakoś? > > http://docs.python.org/3.1/library/gc.html?highlight=get_referrers > > Nie wiem co chciałbyś zrobić, ale od razu zapala mi się czerwona > lampka pod tytułem "wskaźniki na komórkę pamięci". W Pythonie > takie coś nie istnieje i nie można magicznie podmienić adresu > referencji. Generalnie mam obiekty typu proxy, które w którymś momencie można zastąpić obiektem przez nie wywoływanym. Bez tego też działa, ale robi się trochę za dużo pośredników :( Tomasz Slominski
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads