Hi all, I have a question. I've written my first python product for zope. It works until I try to access attributes of a base class. Background: Worker is a class with User as a base class. In Firm.py ... import Being ... class Worker ( Being.User, Acquisition.Implicit, Persistent, AccessControl.Role.RoleManager, OFS.SimpleItem.Item, ): ... The problem occurs when I initialize a worker instance. The statement Being.User.__init__(self, firstname, lastname, email) in the __init__ method of the worker class raises a TypeError. I'm a bit confused since this statement works in plain python. From Firm.py def __init__(self, id, title, rate, firstname, lastname, email): Being.User.__init__(self, firstname, lastname, email) self.id = id self.title = title self.rate = rate self.hours = 0.0 The question is how do i initialize attributes of a base class in zope? Error Type: TypeError Error Value: unbound method must be called with class instance 1st argument Traceback (innermost last): File C:\Program Files\Zope19\lib\python\ZPublisher\Publish.py, line 223, in publish_module File C:\Program Files\Zope19\lib\python\ZPublisher\Publish.py, line 187, in publish File C:\Program Files\Zope19\lib\python\Zope\__init__.py, line 221, in zpublisher_exception_hook File C:\Program Files\Zope19\lib\python\ZPublisher\Publish.py, line 171, in publish File C:\Program Files\Zope19\lib\python\ZPublisher\mapply.py, line 160, in mapply (Object: manage_addWorker) File C:\Program Files\Zope19\lib\python\ZPublisher\Publish.py, line 112, in call_object (Object: manage_addWorker) File C:\Program Files\Zope19\lib\python\Products\TheTracker\Firm.py, line 107, in manage_addWorker File C:\Program Files\Zope19\lib\python\Products\TheTracker\Firm.py, line 38, in __init__ (Object: User) TypeError: (see above) #this is Firm.py import Being import Globals from Globals import Persistent, Acquisition import AccessControl import OFS class Worker ( Being.User, Acquisition.Implicit, Persistent, AccessControl.Role.RoleManager, OFS.SimpleItem.Item, ): "A worker." index_html = Globals.HTMLFile("workerDisplay", globals()) manage_main = Globals.HTMLFile("edit_workerForm", globals()) __ac_permissions__=( ('View management screens', ('manage_main',)), ('View', ('')), ) manage_options=( {'label':'Properties', 'action':'manage_main'}, {'label':'View', 'action':''}, )# + OFS.SimpleItem.SimpleItem.manage_options meta_type = 'Worker (test)' def __init__(self, id, title, rate, firstname, lastname, email): Being.User.__init__(self, firstname, lastname, email) self.id = id self.title = title self.rate = rate self.hours = 0.0 #self.email=email #self.firstname=firstname #self.lastname=lastname def addHours(self, n): "Add n hours for a worker." self.hours = self.hours + n def getHours(self): "Returns current hours." return self.hours def getRate(self): "Returns current rate." return self.rate def calcBill(self): "Returns current bill." return self.rate*self.hours def manage_edit(self, id, title, rate, firstname, lastname, email, REQUEST=None): "Edit worker" self.title = title self.rate = rate #self.email = email #self.firstname = firstname #self.lastname = lastname #self._p_changed = 1 if REQUEST is not None: return Globals.MessageDialog( title='Edited', message='<strong>%s</strong> has been edited.' % self.id, action ='manage_main', ) Globals.default__class_init__(Worker) class Client(Being.User): "A client." def __init__(self, username, firm, firstname, lastname, email): Being.User.__init__(self, username, firstname, lastname, email) self.client_id = username self.firm = firm class Project: "A project." def __init__(self, project_id, client_id, name, deadline, quote): self.hours = 0 self.project_id=project_id self.client_id=client_id self.name=name self.deadline=deadline self.quote=quote def manage_addWorker(self, id, title, rate, firstname, lastname, email, REQUEST=None): """Create a worker and install it in its parent Folder. The argument 'self' will be bound to the parent Folder. """ workerinstance = Worker(id, title, rate, firstname, lastname, email) self._setObject(id, workerinstance) if REQUEST is not None: return self.manage_main(self, REQUEST) manage_addWorkerForm = Globals.HTMLFile('add_workerForm', globals()) #this is Being.py class User: "A generic user." def __init__(self, firstname, lastname, email): self.firstname = firstname self.lastname = lastname self.email = email def getName(self): "Returns full name." return self.firstname +' '+ self.lastname -Aaron