Calling constructor but not initializer
Hrvoje Niksic
hniksic at xemacs.org
Fri Sep 21 10:53:37 EDT 2007
Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
> I can construct an empty instance in the __new__ constructor, and I
> can initialize an non-empty instance in the __init__ initializer,
> but I can't think of any good way to stop __init__ from being called
> if the instance is empty. In pseudo-code, I want to do something
> like this:
>
> class Parrot(object):
> def __new__(cls, data):
> construct a new empty instance
> if data is None:
> return that empty instance
> else:
> call __init__ on the instance to populate it
> return the non-empty instance
Suggestion 1: since you "construct a new empty instance" in both
cases, simply move the entire logic to __init__.
Suggestion 2: name your initialization method something other than
__init__ and the
calling-type-object-automatically-calls-__init__-after-__new__ simply
disappears.
Can you specify the way you'd like to instantiate the class?
More information about the Python-list
mailing list