On Tue, Apr 22, 2014 at 09:48:51AM -0400, Jorge Leon wrote: > Good day, > > > I have programmed a base class for an environment I have with no problem, > but when it comes to referencing the base class's constructor in the > derived class's constructor I have been getting errors:
What version of Python are you using? With super, that is actually critical. > *TypeError: Error when calling the metaclass bases* > * module.__init__() takes at most 2 arguments (3 given)* Read the error message. Why is it refering to *module*.__init__? My guess is that you have a module called Obstacle, and a class called Obstacle, and you have mixed them up. Maybe you are doing this: # file Obstacle.py class Obstacle: # code goes here # Another file import Obstacle class Cylinder(Obstacle) I can reproduce your error that way: py> import math py> class X(math): ... pass ... Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: module.__init__() takes at most 2 arguments (3 given) You need to say class Cylinder(Obstacle.Obstacle) Better still, use the naming convention that modules are in lowercase, and classes in CamelCase: import obstacle class Cylinder(obstacle.Obstacle): ... Even better still, Python is not Java. There is no need to put every class in its own file. > Here's how my base class' constructor looks like (position = [x, y, z]): > *class Obstacle:* > * def __init__(self,position):* > * self.position = position* In Python 2, that is a "classic class", or old-style class, and super will not work correctly. You need to inherit from object: class Obstacle(object) In Python 3, there is no difference and it should be fine. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor