มีอีกวิธีนึงในการที่จะให้คลาสลูกเรียกเมธอด __init__ โดยอัตโนมัติ นั่นคือเราจะไม่สร้างเมธอด __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 ...
การสืบทอดคลาสในไพธอน ถ้าเราสร้างเมธอด __init__ ขึ้นมาใหม่ เขาจะไม่เรียกใช้เมธอด __init__ ของคลาสแม่โดยอัตโนมัติ เราจึงต้องเขียนสั่งให้เรียกเมธอดของคลาสแม่ด้วยตนเอง
การอ้างถึงคลาสแม่ในไพธอน จะอ้างถึงแบบตรง ๆ เช่น
>>> class X: ... def __init__(self): ... print "print from class X" ... >>> class Y(X): ... def __init__(self): ... X.__init__(self) ... print "print from class Y" ... >>> y = Y() print from class X print from class Y >>>
หรือ
>>> class Y(X):
There are currently 0 users online.
Recent comments