🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27075

Re: Python i importowanie

#27075
From: Bart Ogryczak
Date: Mon, 11 Jan 2010 12:38
91 lines
3652 bytes
On Jan 10, 3:53 pm, Michal M <mmier...@tycowaterworks.pl> wrote:
> Siedzę w tym Pythonie już jakiś czas i niestety co chwilę stwierdzam,
> że to importowanie jest zdrowo po....
>
> przykład:
>
> p1.m2
> ----------
> import m1
> import p2.m3
>
> print m1.A.counter
> a = m1.A()
> print m1.A.counter
> p2.m3.get()
>
> p1.m1
> ---------
> class A(object):
>     counter = 0
>     def __init__(self):
>         A.counter = 1
>
> p2.m3
> ---------
> import p1.m1
>
> def get():
>     print "w def m3: " + str(p1.m1.A.counter)
>
> Po uruchomieniu m2:
> 0
> 1
> w def m3: 0
>
> Długo kombinowałem jak sprawić aby w m3 widział obiekt A taki jakim
> jest naprawdę. i w końcu wyszło, że trzeba przerobić m2:
>
> p1.m2
> ---------
>
> import p1.m1
> import p2.m3
>
> print p1.m1.A.counter
> a = p1.m1.A()
> print p1.m1.A.counter
> p2.m3.get()
>
> Teraz wynik jak oczekiwano:
> 0
> 1
> w def m3: 1
>
> Tylko, że przy pisaniu większego programu z setkami modułów
> rozrzuconych po różnych paczkach to staje się horrorem. Już teraz ok.
> 80% czasu zajmuje mi kombinowanie z importowaniem aby wszędzie było
> widziane to co ma być. Już nie mówię o zmorze cyklicznych odwołań
> pomiędzy modułami.
>
> Jest na to jakiś sposób, żeby to opanować?
> Jakieś rady?
> Tak, próbowałem i ciągle próbuję to zrozumieć ale co chwila się łapie
> na tym, że już mi się wydawało, że wszystko ok i znowu coś nie działa.

Coś jest totalnie nie tak z architekturą twoich modułów.
Ja bym zrobił na przykład tak:

p2.m3
---------

class A:
   """abstrakcyjna klasa do nadpisania przez inny moduł"
   __init__():
       raise NotImplementedError

def get():
     counter = A()
     print "w def m3: " + str(counter)

p1.m2
----------
import m1
import p2.m3

print m1.A.counter
a = m1.A()
print m1.A.counter

p2.m3.A = m1.A
p2.m3.get()
Technical Details
Message-ID: <21fde42e-b4a3-412e-b2a0-9a6dba90251f@a32g2000yqm.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!postnews.google.com!a32g2000yqm.googlegroups.com!not-for-mail
References: <37d6d97e-88b4-4324-9973-a368959f8339@e27g2000yqd.googlegroups.com> <52950de7-b700-40e0-964d-0bb7ab394964@x15g2000vbr.googlegroups.com> <mburv6-lmm.ln1@bozon.softax.pl> <30287087-8528-4210-9ba0-0f4c7784279a@h9g2000yqa.googlegroups.com> <3272901b-3457-4af7-bbc3-d90b8f6ca9de@r24g2000yqd.googlegroups.com> <732fb9a9-5dd6-407e-b9ac-ea572f254e6a@h9g2000yqa.googlegroups.com> <0048c61f-61ec-4934-afb7-04a477685871@j19g2000yqk.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!postnews.google.com!a32g2000yqm.googlegroups.com!not-for-mail
From: Bart Ogryczak <b.ogryczak@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Python i importowanie
Date: Mon, 11 Jan 2010 04:38:20 -0800 (PST)
Organization: http://groups.google.com
Lines: 99
Message-ID: <21fde42e-b4a3-412e-b2a0-9a6dba90251f@a32g2000yqm.googlegroups.com>
References: <37d6d97e-88b4-4324-9973-a368959f8339@e27g2000yqd.googlegroups.com>  <52950de7-b700-40e0-964d-0bb7ab394964@x15g2000vbr.googlegroups.com>  <mburv6-lmm.ln1@bozon.softax.pl> <30287087-8528-4210-9ba0-0f4c7784279a@h9g2000yqa.googlegroups.com>  <3272901b-3457-4af7-bbc3-d90b8f6ca9de@r24g2000yqd.googlegroups.com>  <732fb9a9-5dd6-407e-b9ac-ea572f254e6a@h9g2000yqa.googlegroups.com>  <0048c61f-61ec-4934-afb7-04a477685871@j19g2000yqk.googlegroups.com>
NNTP-Posting-Host: 94.100.112.225
Mime-Version: 1.0
X-Trace: posting.google.com 1263213501 1759 127.0.0.1 (11 Jan 2010 12:38:21 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Mon, 11 Jan 2010 12:38:21 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: a32g2000yqm.googlegroups.com; posting-host=94.100.112.225;  posting-account=1kG_1AoAAADLEA3eucGvO2J-Uo4aPCW_
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US)  AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit