ผลต่างระหว่างรุ่นของ "Python Programming/Inheritance"
ไปยังการนำทาง
ไปยังการค้นหา
Cardcaptor (คุย | มีส่วนร่วม) |
Cardcaptor (คุย | มีส่วนร่วม) |
||
แถว 37: | แถว 37: | ||
... def fly(self): | ... def fly(self): | ||
... print "Time flies like an arrow" | ... print "Time flies like an arrow" | ||
+ | </pre> | ||
+ | |||
+ | สังเกตว่าทั้งสามคลาสที่เราได้นิยามมา คือ Superdog, Plane และ Fly มีเมท็อด fly เหมือนกันทั้งสิ้น เราสามารถนำวัตถุของคลาสทั้งสามมาใช้ได้ในทุกที่ที่เราต้องการเรียกใช้เมท็อด fly เช่นในตัวอย่างด้านล่างนี้ | ||
+ | |||
+ | <pre title="interpreter"> | ||
+ | >>> o1 = Superdog('Johny',3) | ||
+ | >>> o2 = Plane('AirSuperJet','T1000') | ||
+ | >>> o3 = Fly() | ||
+ | >>> | ||
+ | >>> objs = [o1,o2,o3] | ||
+ | >>> for o in objs: | ||
+ | ... o.fly() | ||
+ | ... | ||
+ | weeew weeeeeew Johny is flying... | ||
+ | AirSuperJet T1000 is flying FAST! | ||
+ | Time flies like an arrow | ||
+ | </pre> | ||
+ | |||
+ | เราอาจะเขียนฟังก์ชัน flyflyfly ดังด้านล่าง | ||
+ | |||
+ | <pre title="interpreter"> | ||
+ | >>> def flyflyfly(x): | ||
+ | ... print "Preparing..." | ||
+ | ... x.fly() | ||
+ | ... x.fly() | ||
+ | ... x.fly() | ||
+ | ... | ||
</pre> | </pre> |
รุ่นแก้ไขเมื่อ 18:42, 19 ตุลาคม 2551
- ส่วนนี้ลอกมาจาก การโปรแกรมเชิงวัตถุในไพทอน ของ จิตรทัศน์ ฝักเจริญผล
เราสามารถสร้างคลาส Superdog ที่สืบทอดมาจากคลาส Dog ได้ โดยเขียน
>>> class Superdog(Dog): ... def fly(self): ... print "weeew weeeeeew", self.name, "is flying..." ... def say_age(self): ... print "I am not telling you"
ซึ่งสามารถเรียกใช้ได้ดังนี้
>>> a = Superdog('Mabin',1) >>> a.fly() weeew weeeeeew Mabin is flying... >>> a.say_hello() # สังเกตว่าเมท็อดนี้สืบทอดมาจากคลาส Dog Hello, my name is Mambo >>> a.say_age() # สังเกตว่าเมท็อดนี้ถูกเปลี่ยนแปลงในคลาส Superdog I am not telling you
ความเป็นพลวัต
เรานิยามคลาส Plane และคลาส Fly เพิ่มดังนี้
>>> class Plane: ... def __init__(self, brand, model): ... self.brand = brand ... self.model = model ... def fly(self): ... print self.brand, self.model, "is flying FAST!" ... >>> class Fly: ... def fly(self): ... print "Time flies like an arrow"
สังเกตว่าทั้งสามคลาสที่เราได้นิยามมา คือ Superdog, Plane และ Fly มีเมท็อด fly เหมือนกันทั้งสิ้น เราสามารถนำวัตถุของคลาสทั้งสามมาใช้ได้ในทุกที่ที่เราต้องการเรียกใช้เมท็อด fly เช่นในตัวอย่างด้านล่างนี้
>>> o1 = Superdog('Johny',3) >>> o2 = Plane('AirSuperJet','T1000') >>> o3 = Fly() >>> >>> objs = [o1,o2,o3] >>> for o in objs: ... o.fly() ... weeew weeeeeew Johny is flying... AirSuperJet T1000 is flying FAST! Time flies like an arrow
เราอาจะเขียนฟังก์ชัน flyflyfly ดังด้านล่าง
>>> def flyflyfly(x): ... print "Preparing..." ... x.fly() ... x.fly() ... x.fly() ...