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. > I could be missing something but dataset is shared among all the class instances. If you reset it based on param it will be reset every time you create a new instance of the Base class with a different param. Is that really what you want to do? If so just use:
class Base(object): dataset = None def __init__(self, param): if self.dataset is None: # code to load dataset based on param, expensive -Larry -- http://mail.python.org/mailman/listinfo/python-list