python: บันทึกเรื่องคลาสอีกครั้ง

มีอีกวิธีนึงในการที่จะให้คลาสลูกเรียกเมธอด __init__ โดยอัตโนมัติ นั่นคือเราจะไม่สร้างเมธอด __init__ ในคลาสลูก แต่สร้างเมธอดใหม่ที่เมธอด __init__ จะมาเรียกใช้อีกทีนึง

ตัวอย่าง

>>> class X:
...   def __init__(self,*argv,**keyw):
...     if len(self.__class__.__bases__) == 0:
...       self._parent = None
...     else:
...       self._parent = self.__class__.__bases__[0]
...     print self._parent
...     self.init(argv, keyw)
...   def init(self,*argv,**keyw):
...     pass
... 

>>> class Y(X):
...   def init(self,*argv,**keyw):
...     print 'Print from class Y'
... 

>>> class Z(Y):
...   pass
... 

>>> y=Y()
__main__.X
Print from class Y

>>> z=Z()
__main__.Y
Print from class Y