🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
7 messages
7 total messages Started by pr Sun, 14 Mar 2010 12:06
Przestrzeń nazw (?)
#27354
Author: pr
Date: Sun, 14 Mar 2010 12:06
17 lines
1276 bytes
Witam,

Czy w Pythonie (3.1) można zrobić coś takiego (jeden plik):

class A:
  class AA:
    obj = B()


class B:
  class BB:
    obj = A()

A()
B()

?
Re: Przestrzeń nazw (?)
#27355
Author: Jordan Szubert
Date: Sun, 14 Mar 2010 13:04
41 lines
1867 bytes
Dnia 14-03-2010 o 13:06:00 pr <cricogik@gmail.com> napisał(a):

> Witam,
>
> Czy w Pythonie (3.1) można zrobić coś takiego (jeden plik):
>
> class A:
>   class AA:
>     obj = B()
>
>
> class B:
>   class BB:
>     obj = A()
>
> A()
> B()
>
> ?


Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit  
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
...     class AA:
...             obj=None
...
>>> class B:
...     class BB:
...             obj=A()
...
>>> A.AA.obj=B()
>>> a=A()
>>> b=B()
>>>



-- 
Używam klienta poczty Opera Mail: http://www.opera.com/mail/
Re: Przestrzeń nazw (?)
#27356
Author: pr
Date: Sun, 14 Mar 2010 14:23
26 lines
1904 bytes
On 14 Mar, 14:04, "Jordan Szubert" <n...@podam.na.razie> wrote:
> Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit  
> (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.>>> class A:
>
> ...     class AA:
> ...             obj=None
> ...>>> class B:
>
> ...     class BB:
> ...             obj=A()
> ...
>
> >>> A.AA.obj=B()
> >>> a=A()
> >>> b=B()

Tak, wiem, że tak można zrobić, aczkolwiek chce tego uniknąć..
myślałem, że może jest jakiś sposób np. poprzez bardziej skomplikowane
użycie modułów..

Np przed obj = B() wywołać:
import obecny_modul
obj = obecny_modul.B()

Tylko coś mi to na py3.1 nie do końca działa..
Re: Przestrzeń nazw (?)
#27357
Author: Łukasz Rekucki
Date: Sun, 14 Mar 2010 15:46
39 lines
2756 bytes
On 14 Mar, 15:23, pr <crico...@gmail.com> wrote:
> On 14 Mar, 14:04, "Jordan Szubert" <n...@podam.na.razie> wrote:
>
> > Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit  
> > (Intel)] on win32
> > Type "help", "copyright", "credits" or "license" for more information.>>> class A:
>
> > ...     class AA:
> > ...             obj=None
> > ...>>> class B:
>
> > ...     class BB:
> > ...             obj=A()
> > ...
>
> > >>> A.AA.obj=B()
> > >>> a=A()
> > >>> b=B()
>
> Tak, wiem, że tak można zrobić, aczkolwiek chce tego uniknąć..
> myślałem, że może jest jakiś sposób np. poprzez bardziej skomplikowane
> użycie modułów..
>
> Np przed obj = B() wywołać:
> import obecny_modul
> obj = obecny_modul.B()
>
> Tylko coś mi to na py3.1 nie do końca działa..

To tak jakbyś oczekiwał, że

    print n
    n = 42

wypisywało 42. Dopóki nie stworzysz tej klasy, to nie możesz użyć jej
metody. "class"  jest taką samą instrukcją, a nie deklaracją jak
"def". Importowanie modułów nic tu nie zmieni, bo w jeśli w trakcie
inicjalizacji modułu, zaimportujesz go, to widzisz tylko to co już
zostało wykonane (co jest dość logiczne).
Re: Przestrzeń nazw (?)
#27358
Author: Bart Ogryczak
Date: Mon, 15 Mar 2010 09:54
20 lines
1641 bytes
On Mar 14, 1:06 pm, pr <crico...@gmail.com> wrote:
> Witam,
>
> Czy w Pythonie (3.1) można zrobić coś takiego (jeden plik):
>
> class A:
>   class AA:
>     obj = B()
>
> class B:
>   class BB:
>     obj = A()
>
> A()
> B()
>
> ?

Już pare razy tu o tym było -- jeśli czegoś takiego potrzebujesz, to
znaczy, że masz spitolony model.
Re: Przestrzeń nazw (?)
#27361
Author: pakalk
Date: Sun, 21 Mar 2010 19:12
40 lines
1837 bytes
On 14 Mar, 13:06, pr <crico...@gmail.com> wrote:
> Witam,
>
> Czy w Pythonie (3.1) można zrobić coś takiego (jeden plik):
>
> class A:
>   class AA:
>     obj = B()
>
> class B:
>   class BB:
>     obj = A()
>
> A()
> B()
>
> ?

Nie wdając się w to, czy to co robisz ma sens... tak nie może być:

class A:
    class AA:
        o = None

        def __init__(self):
            self.o = B()


class B:
    class BB:
        o = None

        def __init__(self):
            self.o = A()


a = A()
b = B()

?
Re: Przestrzeń nazw (?)
#27359
Author: wysek
Date: Mon, 22 Mar 2010 08:24
46 lines
2011 bytes
On 15 Mar, 10:54, Bart Ogryczak <b.ogryc...@gmail.com> wrote:
> On Mar 14, 1:06 pm, pr <crico...@gmail.com> wrote:
>
>
>
> > Witam,
>
> > Czy w Pythonie (3.1) można zrobić coś takiego (jeden plik):
>
> > class A:
> >   class AA:
> >     obj = B()
>
> > class B:
> >   class BB:
> >     obj = A()
>
> > A()
> > B()
>
> > ?
>
> Już pare razy tu o tym było -- jeśli czegoś takiego potrzebujesz, to
> znaczy, że masz spitolony model.

Czy ja wiem, czasami sie takie cos przydaje.
Nie znam sie, ale czy nie ma na to czasem jakiegos wzorca?;)

class A:
    B = None
    def b(self):
        return A.B()

class B:
    A = None
    def a(self):
        return B.A()

A.B = B
B.A = A

#####

A().b()
B().a()
A().b().a().b()
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