Gabriel Genellina wrote:
En Sun, 11 Oct 2009 14:50:31 -0300, Stef Mientki
<stef.mien...@gmail.com> escribió:
I do agree that circular references should preferable be avoided.
In languages like Delphi, you get an error message, trying to use
circular references,
but solving them in large programs with a lot of history can be very
painful.
Now I finally (after 2 years) knowing there's a difference between
modules and scripts,
I want to guarantee that I always get the same functional behavior.
In Delphi terms, you have units (.pas) and programs (.dpr). You can't
add a .dpr to the Uses clause of an unit. In case you have some code
in a .dpr that you want to use somewhere else, you move it into a new
unit and Use it from both places.
I never ever edited a dpr file, it's created fully automatically (don't
know what is in it) and I even think you don't need to use it at all.
In Delphi there's a "main unit" and other units, but it's up to the
programmer which unit is set as the "main unit".
Although I admit (because of the forbidden circular references) that's
not easy to use a unit designed as "main", and use as normal unit or
even better as a general purpose library.
Translated to Python terms: you have modules and scripts. You
shouldn't import a script from a module. In case you have some code in
a script that you want to use somewhere else, move it into a new
module and import it from both places.
Note the change between "can't" and "shouldn't". Delphi just won't let
you import the main program from another place;
well is does, notice Delphi has 2 locations for the uses clause !
Python does, with strange effects, but you should not do that. You can
avoid the temptation by naming your scripts with another extension (or
no extension at all).
Going from Delphi to Python,
using a module (unit) both as standalone program and a library for other
programs,
was a beautiful relief.
Now finally I could play with software as if it was Lego ( those
children building blocks).
And indeed I've a few stand alone Python applications, that can fully be
embedded in other Python applications and docked in their GUI.
I found 2 solutions to realize the above.
[...]
Too much hassle and magic for what should be a non-issue.
If you choose for a strict separation between "script" and "module", I
guess it's indeed a non-issue.
Using software as if it was Lego, needs either a detection or prevention
of effects of the difference between script and module.
thanks,
Stef
--
http://mail.python.org/mailman/listinfo/python-list