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