I'm actually sort of surprised that it used to work at all.. I'd imagine that AttributeError is on the eventtime attr, right? Though I haven't looked at the code, from your description, it would seem that the pluggable brains stuff makes a class instance and then stuffs in the attrs... the __init__ method would get called at instantiation time before the class attrs existed, causing the attributeerror. Would it be possible to use an "init()" method on the brain object, a custom __getattr__, or a computed attribute (see http://debian.acm.ndsu.nodak.edu/doc/python-extclass/ExtensionClass.html , search for computed attribute) instead of trying to precompute the attr? You could cache the return value on the first call if you used a custom __getattr__ or a computed attribute. - C ----- Original Message ----- From: "Brad Clements" <bkc@murkworks.com> To: "Chris McDonough" <chrism@digicool.com> Cc: <zope@zope.org> Sent: Thursday, July 05, 2001 1:37 PM Subject: Re: [Zope] ZSQL Pluggable brains broke in later Zope, can't add instance attributes
On 5 Jul 2001, at 13:02, Chris McDonough wrote:
Is eventday acquired or something?
Sorry, here's the full class, eventtime is an SQL column
class PackageEvent: """Package Event Pluggable Brain""" def __init__(self): """initialize""" self.eday = self.eventday() # setattr(self,'eday',self.eventday()) # self.__dict__['eday'] = self.eventday()
def eventday(self): return DateTime(apply(time.mktime,self.eventtime.tuple()[:3]+(0,0,0,0,0,-1)))