Hi all, Still a newbie but making some headway. So I have a file structure like this..
top/ --modules/ ----metrics.py --metrix/ ----uptime.py Now metrics.py is my superclass, and uptime.py inherits the superclass metrics.py. So for arguments sake metrics.py ---------------- class metrics(): def __init__(self, foo=bar): self.foo=foo def run(): pass ---------------- uptime.py ---------------- class metrics(metrics): def run(): print "hello" if __name__ == '__main__': if os.path.exists("../modules"): print "importing modules" sys.path.insert( 0, "../modules") import metrics else: print "Unable to bring in main metric instance - path not correct" sys.exit(1) ---------------- Now if simply try to run ./uptime.py it complains about not having the metrics module? Huh but I brought it in? File "./uptime.py", line 19, in ? class uptime(metrics): NameError: name 'metrics' is not defined BUT... If I do this then it it imports.. ( NOTE the order is different.. ) uptime.py ---------------- if os.path.exists("../modules"): print "importing modules" sys.path.insert( 0, "../modules") import metrics else: print "Unable to bring in main metric instance - path not correct" sys.exit(1) class metrics(metrics): def run(): print "hello" if __name__ == '__main__': pass ---------------- But I get the next erorr: Path exists importing modules Traceback (most recent call last): File "./uptime.py", line 34, in ? class uptime(metrics): TypeError: Error when calling the metaclass bases module.__init__() takes at most 2 arguments (3 given) So the question is.. Why is it not looking at the "if __name__ == '__main__':" statement and starting there? I thought it was supposed to do that? Why can't I just put a class statement in a file and if you put nothing (like if __name__....) the class is just "registered" so later if (like __main__) I use it then it's available. I want to not have to put that ugly code at the top but it seems as though that's the only way? Someone must have figured this out and can you explain why it workst this way? I must be missing something cause that's how modules work. How is this different than a module? -- http://mail.python.org/mailman/listinfo/python-list