[ mr.marvin @ 07.11.2007. 12:34 ] @
Imam paket, recimo "pkg", i u njemu module mod1 i mod2. Mod1 ima clasu koja se koristi u mod2 i obratno. Python prijavljuje gresku ako pozivam u mod1:

import mod2

...zato sto u mod2 imam liniju koja glasi "from mod1 import ...". Izgleda da sam napravio petlju u lodovanju modula.

Zanima me kako ovo da rijesim? Kako da sve sto mi treba stavim u globalni namespace, tako da je spremno za upotrebu? I kako mogu da izbjegnem da u svakom modulu u pkg pisem "from pkg.module1 import to_i_to"?
[ StefanJer91 @ 07.11.2007. 14:16 ] @
Nisam bas najbolje razumeo tvoj problem, ali ne vidim sto toliko komlikujes. Stavi stvari za importovanje sve u jedan module pa importuj iz ova 2. Sto se drugog problema tice, ako sam razumeo trebi treba from pkg.module1 import * ( * znaci da importujes sve stvari iz tog modula)
[ mr.marvin @ 07.11.2007. 18:53 ] @
Kako program raste, tako se stvari kompikuju, a ja pokusavam da ih drzim pod kontrolom. Znam za "import *", ali medjusobno importovanje izmedju dva modula dovodi do greske (il sam je krivo shvatio).

Ne odgovara mi da sve stavim u jednan modul, pa odatle da importujem.

Kako da neke klase, vrijednosti itd. postavim kao "public", odnosno da stalno budu spremne za upotrebu? Da li je dovoljno da u __init__.py postavim linije sa kodom "from module1 import class1 as class1" ili ima neka druga praksa?
[ StefanJer91 @ 07.11.2007. 20:46 ] @
Ja na zalost ne znam, nikada nisam to radio jer nisam imao potrebu sa tim. Moj savet ti je da uzmes neciji tudji projekat i pogledas kako je to uradjeno. Btw, jesi li gledao python dokumentaciju? Mozda ovde ima ono sto ti treba http://www.python.org/doc/current/dist/dist.html
[ alex @ 08.11.2007. 13:16 ] @
Citat:
mr.marvin: Kako program raste, tako se stvari kompikuju, a ja pokusavam da ih drzim pod kontrolom. Znam za "import *", ali medjusobno importovanje izmedju dva modula dovodi do greske (il sam je krivo shvatio).


Ukoliko klasama u jednom modulu pristupas u drugom modulu i obratno, odnosno ukoliko imas upravo takav problem (potrebu za medjusobnim importovanjem modula) verovatno je potrebno da izvrsis reorganizaciju svojih modula, jer se ocigledno (nepotrebno) preklapaju.

Citat:

Kako da neke klase, vrijednosti itd. postavim kao "public", odnosno da stalno budu spremne za upotrebu? Da li je dovoljno da u __init__.py postavim linije sa kodom "from module1 import class1 as class1" ili ima neka druga praksa?


Koncept public i private metoda klasa i varijabli je u Python jeziku resen kroz imena samih metoda i varijabli. Ukoliko ime metoda ili varijable u okviru klase pocinje sa "__" (double underscore) Python im ne dozvoljava pristup van same klase.

Vise o tome ovde
[ mr.marvin @ 16.11.2007. 14:01 ] @
Najpametinije je bilo sve module malo reorganizovati, kao sto si preporucio, i sad je sve ok. Medjutim, nisam mislio na public/private osobine unitar klase, vec na same module unutar projekta, ali i to se polako sredjuje.