one-time initialization of class members
Larry Bates
larry.bates at websafe.com
Wed Jun 13 20:00:08 EDT 2007
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
More information about the Python-list
mailing list