Sorry for the confusion; fooz(), track() and barz() are all members of their
respective classes. I must have missed the self argument while creating the
synthetic example.
Yeah, I realize the mutual import is a bad idea. So, if I merge them into a
single module (but still retaining the two classes) will work right? I
guess, it will look like this after merging.
Thanks again
-b
* foo_bar.py *
class Foo:
def fooz(self):
print "Hello World"
b = Bar()
c = b.barz()
...
def track(self, track_var):
count += 1
return sth2
class Bar:
def barz(self):
track_this = ...
if Foo.track(track_this):
pass
else:
...
return sth1
On Thu, Oct 28, 2010 at 7:12 PM, Dave Angel <[email protected]> wrote:
> Your example is so vague it's hard to tell what the real requirements are.
> Foo.track() won't work as coded, since it doesn't have a self argument. If
> you really meant that, then make it a non-class function, and preferably
> define it in another module, included perhaps by both bar and foo.
> Similarly, barz() cannot be called, since it wants zero arguments, and
> it'll always get at least one.
>
> If I were you, I'd put both classes into the same module until you get
> their relationship properly understood. And if they're really so
> intertwined, consider leaving them in the same module. This isn't java.
>
> In general, it's best not to have two modules importing each other.
> Generally, you can extract the common things into a separate module that
> each imports. Failing that, you can have one import the other, and pass it
> whatever object references it'll need to run. For example, at the end of
> foo.py, you'd have something like
> bar.Foo = Foo
>
> If you really need to mutually import two modules, the first problem you're
> likely to bump into is if either of them is your script. In other words,
> you need to have a separate file that's your script, that imports both foo
> and bar.
>
> DaveA
>
>
--
http://mail.python.org/mailman/listinfo/python-list