metal a écrit :
Consider the following:
(snip)
class Parent:
def some_method(self):
return Parent(...)
class Child:
pass
Child().some_method() returns a Parent instance.
It actually raises an AttributeError. You forgot to make Child inherit
from Parent.
We can rewrite Parent like this to avoid that
########################################
class Parent:
def some_method(self):
return self.__class__(...)
class Child:
def some_method(self):
...
return Parent.some_method(self)
########################################
But this style makes code full with ugly self.__class__
Any standard/pythonic way out there?
Others already gave you the appropriate answer (if appliable, of
course), which is to make some_method a classmethod, or, if some_method
needs to stay an instancemethod, to factor out the creation of a new
instance to a classmethod.
Now if it's the self.__class__ that hurts you, you can as well replace
it with type(self) - assuming you make Parent a new-style class (which
FWIW is the sensible thing to do anyway).
--
http://mail.python.org/mailman/listinfo/python-list