Returning other instance from __init__
Paulo da Silva
psdasilvaX at esotericaX.ptX
Fri Mar 16 16:17:22 EDT 2007
Paulo da Silva escreveu:
> Alex Martelli escreveu:
>> Paulo da Silva <psdasilvaX at esotericaX.ptX> wrote:
> ....
>
>> E.g.:
>>
>> class C1(object):
>> def __new__(cls, xxx):
>> if xxx: return type.__new__(cls, xxx)
>> else: return C1.load(xxx)
>> @staticmethod
>> def load(xxx): return ...whatever...
>> def __init__(self, xxx):
>> if hasattr(self, 'foo'): return
>> self.foo = 'foo'
>> self.bar = 'bar'
>>
>
>
> Just for a better understanding ...
> Can I do this?
>
> class C1(object):
> def __new__(cls, xxx):
> if xxx:
> cls.foo='foo'
> cls.bar='bar'
> return type.__new__(cls, xxx)
This does not work(!) at least for python 2.4.3.
> else:
> return C1.load(xxx)
> @staticmethod
> def load(xxx): return ...whatever...
> # OMMIT THE __init__
> # or
> def __init__(self, xxx):
> pass
I needed return cls and put the __init__ stuff here.
Is this the best practice?
Thanks.
More information about the Python-list
mailing list