class

 

มีอีกวิธีนึงในการที่จะให้คลาสลูกเรียกเมธอด __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):
Subscribe to RSS - class
 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.