Fwd: Calling a method from invoking module
baskarans at gmail.com
Fri Oct 29 05:33:41 CEST 2010
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
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.
* foo_bar.py *
print "Hello World"
b = Bar()
c = b.barz()
def track(self, track_var):
count += 1
track_this = ...
On Thu, Oct 28, 2010 at 7:12 PM, Dave Angel <davea at ieee.org> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-list