python: บันทึกเรื่องคลาส
Submitted by wd on Fri, 2007-03-30 17:56
การสืบทอดคลาสในไพธอน ถ้าเราสร้างเมธอด __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): ... def __init__(self): ... self.__parent = X ... self.__parent.__init__(self) ... print "print from class Y" ...
แบบหลังจะมีประโยชน์ในการเรียกใช้คลาสแม่จากเมธอดอื่นในคลาสนั้น ๆ
ถ้าเป็นการสืบทอดคลาสเพียงชั้นเดียว สามารถใช้พรอพเพอร์ตี้ __class__
และ __bases__
คือ
self.__parent = self.__class__.__bases__[0]
แต่พอสืบทอดกันเกินหนึ่งชั้นแล้ว การทำงานจะตีกันมั่ว
- Printer-friendly version
- Log in or register to post comments
- 5200 reads
Recent comments