On Wed, 13 Jun 2007 23:55:02 +0000, James Turk wrote: > On Jun 13, 6:54 pm, Steven Bethard <[EMAIL PROTECTED]> wrote: >> James Turk wrote: >> > Hi, >> >> > I have a situation where I have some class members that should only be >> > done once. Essentially my problem looks like this: >> >> > class Base(object): >> > dataset = None >> >> > def __init__(self, param): >> > if type(self).dataset is None: >> > # code to load dataset based on param, expensive >> >> > class ChildClass1(Base): >> > def __init__(self): >> > Base.__init__(self, data_params) >> >> > class AnotherChildClass(Base): >> > def __init__(self): >> > Base.__init__(self, other_data_params) >> >> > This seems to work, initialization is only done at the first creation >> > of either class. I was just wondering if this is the 'pythonic' way >> > to do this as my solution does feel a bit hackish. >> >> What should happen with code like:: >> >> ChildClass1('foo') >> ChildClass1('bar') >> >> The 'param' is different, but 'dataset' should only get set the first time? >> >> STeVe > > ChildClass doesn't take the parameter in it's constructor, it supplies > it for the BaseClass. Every ChildClass of the same type should use > the same dataset.
Then each type of ChildClass should be a sub-class, and provide it's own dataset: class BaseClass: dataset = None # blah blah blah... class ChildClass1(BaseClass): dataset = SomethingUseful class ChildClass2(BaseClass): dataset = SomethingElse -- Steven. -- http://mail.python.org/mailman/listinfo/python-list