สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial Python

L16 PYTHON SIMPLE ARITHMETIC L40 PYTHON TUTORIAL INTRO L41 PYTHON GETTING STARTED L42 PYTHON SYNTAX L43 PYTHON COMMENTS L44 PYTHON VARIABLES L45 PYTHON DATATYPE L46 PYTHON NUMBERS L47 PYTHON CASING L48 PYTHON STRINGS L49 PYTHON BOOLEANS L50 PYTHON OPARETORS L51 PYTHON LISTS L52 PYTHON TUPELS L53 PYTHON SETS L54 PYTHON DICTIONARY L55 PYTHON IF ELSE L56 PYTHON WHILE LOOP L57 PYTHON FOR LOOP L58 PYTHON FUNCTION L59 PYTHON LAMBDA L60 PYTHON ARRAYS L61 PYTHON CLASSSES OBJECTS L62 PYTHON INHERITANCE L63 PYTHON ITERATORS L63 PYTHON SCOPE L64 PYTHON MODULES L65 PYTHON DATETIME L66 PYTHON JSON L67 PYTHON REGEX L68 PYTHON PIP L69 PYTHON TRY EXCAPE L70 PYTHON USER INPUT L71 PYTHON FILE OPEN L73 PYTHON STRING FORMATTING L74 PYTHON READ FILE L75 PYTHON WRILE CREATE FILE L76 PYTHON DELETE FILE L90 PYTHON POISSON DISTRIBUTION L90 PYTHON RANDOM INTRODUCTION L91 PYTHON CHI SQUARE DISTRIBUTION L91 PYTHON EXPONENTIAL DISTRIBUTION L92 PYTHON RAYLEIGH DISTRIBUTION L93 PYTHON PARETO DISTRIBUTION L94 PYTHON ZIPF DISTRIBUTION L96 PYTHON RANDOM PERMUTATIONS L97 PYTHON SEABORN L98 PYTHON NORMAL DISTRIBUTION L99 PYTHON DISTRIBUTION L99 PYTHON LOGISTIC DISTRIBUTION L99 PYTHON MULTINOMIAL DISTRIBUTION L99 PYTHON NUMPY SPLITTING ARRAY L99 PYTHON NUMPY UFUNCS L99 PYTHON UNIFORM DISTRIBUTION LM60PYTHON BUILT IN FUNCTIONS LM61PYTHON STRING METHODS LM62PYTHON LIST ARRAY METHODS LM63PYTHON DICTIONARY METHODS LM64PYTHON TUPLE METHODS LM65PYTHON SET METHODS LM66PYTHON FILE METHODS LM67PYTHON KEYWORD LM68PYTHON BUILT IN EXCAPTION LM69PYTHON RANDOM MODULE LM70PYTHON MATH MODULE LM70PYTHON REQUSTS MODULE LM72PYTHON CMATH MODULE LM73PYTHON HOWTO REMOVE DUPLICATES FROM A PYTHON LIST LM74PYTHON HOW TO REVERSE A STRING IN PYTHON LM75PYTHON HOW TO ADD TWO NUMBERS IN PYTHON LM95PYTHON RANDOM DATA DISTRIBUTION

Python Inheritance

เรียนเขียนโปรแกรมง่ายๆกับ Expert Programming Tutor วันนี้เราจะมาเข้าสู่บท Inherritance
การสืบทอดทำให้เราสามารถกำหนดคลาสที่สืบทอดเมธอดและคุณสมบัติทั้งหมดจากคลาสอื่น
Parent class เป็นคลาสที่สืบทอดมาจากที่เรียกว่าชั้นฐาน
Child class เป็นคลาสที่สืบทอดจากคลาสอื่นหรือที่เรียกว่าคลาสที่ได้รับ

สร้างParent class
คลาสใด ๆ สามารถเป็นคลาสพาเรนต์ได้ดังนั้นไวยากรณ์จะเหมือนกับการสร้างคลาสอื่น ๆ 
ตัวอย่าง
สร้างคลาสชื่อ Person โดยมีคุณสมบัติชื่อและนามสกุลและวิธีการ printname

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
self.lastname = lname
  def printname(self):
print(self.firstname, self.lastname)
#Use the Person class to create an object, and then execute the printname method:

 x = Person("John", "Doe")
x.printname()

ผลลัพธ์

John Doe

สร้าง Child Class
ในการสร้างคลาสที่สืบทอดการทำงานจากคลาสอื่นให้ส่งคลาสพาเรนต์เป็นพารามิเตอร์เมื่อสร้างคลาสย่อย
ตัวอย่าง
สร้างคลาสที่ชื่อว่า Student ซึ่งจะสืบทอดคุณสมบัติและเมธอดจากคลาส Person

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
   self.lastname = lname
  def printname(self):
   print(self.firstname, self.lastname)

class Student(Person):
 def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
   self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

 x = Student("Mike", "Olsen", 2019)
x.welcome()

ผลลัพธ์

Welcome Mike Olsen to the class of 2019

เพิ่มฟังก์ชั่น __init __ ()
จนถึงตอนนี้เราได้สร้างคลาสย่อยที่สืบทอดคุณสมบัติและเมธอดจากคลาสพาเรนต์ เราต้องการเพิ่มฟังก์ชัน __init __ () ให้กับคลาสย่อย (แทนที่จะเป็นpass)
หมายเหตุ: ฟังก์ชัน __init __ () จะถูกเรียกโดยอัตโนมัติทุกครั้งที่มีการใช้คลาสเพื่อสร้างอ๊อบเจคใหม่
ตัวอย่าง
เพิ่มฟังก์ชัน __init __ () ให้กับคลาสของนักเรียน

class Student(Person):
  def __init__(self, fname, lname):
    #add properties etc.

เมื่อนักเรียนเพิ่มฟังก์ชัน __init __ () คลาสย่อยจะไม่สืบทอดฟังก์ชัน __init __ () ของคลาสพาเรนต์อีกต่อไป
หมายเหตุ: ฟังก์ชัน __init __ () ของคลาสย่อยจะแทนที่การสืบทอดของฟังก์ชัน __init __ () ของคลาสพาเรนต์
หากต้องการเก็บข้อมูลของฟังก์ชัน __init __ () ของคลาสพาเรนต์ให้เพิ่มการเรียกไปยังฟังก์ชัน __init __ () ของคลาสพาเรนต์
ตัวอย่าง

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

x = Student("Mike", "Olsen")
x.printname()

ผลลัพธ์

Mike Olsen

ตอนนี้เราได้เพิ่มฟังก์ชัน __init __ () สำเร็จแล้วและยังคงสืบทอดของคลาสพาเรนต์และเราพร้อมที่จะเพิ่มฟังก์ชันการทำงานในฟังก์ชัน __init __ ()
ใช้ฟังก์ชั่น super ()
Python มีฟังก์ชั่น super () ที่จะทำให้คลาสย่อยสืบทอดเมธอดและคุณสมบัติทั้งหมดจากคลาสพาเรนต์
ตัวอย่าง

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

x = Student("Mike", "Olsen")
print(x.graduationyear)

ผลลัพธ์

2019

ด้วยการใช้ฟังก์ชัน super () นักเรียนไม่จำเป็นต้องใช้ชื่อขององค์ประกอบหลักมันจะสืบทอดเมธอดและคุณสมบัติจากคลาสพาเรนต์โดยอัตโนมัติ
Add Properties
ตัวอย่าง
เพิ่มคุณสมบัติที่เรียกว่าgraduationyearในคลาสของStudent

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)
print(x.graduationyear)

ผลลัพธ์

2019

ในตัวอย่างด้านล่างปี 2019 ควรเป็นตัวแปรและส่งผ่านไปยังคลาสStudentเมื่อสร้างอ๊อบเจ็คStudent โดยเพิ่มพารามิเตอร์อื่นในฟังก์ชัน __init __ ()
ตัวอย่าง
เพิ่มพารามิเตอร์ปีค.ศ และผ่านปีที่ถูกต้องเมื่อสร้างอ๊อบเจ็ค

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)
print(x.graduationyear)

ผลลัพธ์

2019

Add Methods
ตัวอย่าง
เพิ่มวิธีการที่เรียกว่า welcome

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

x = Student("Mike", "Olsen", 2019)
x.welcome()

ผลลัพธ์

Welcome Mike Olsen to the class of 2019

ถ้านักเรียนเพิ่มวิธีการในคลาสย่อยที่มีชื่อเดียวกันกับฟังก์ชั่นในคลาสพาเรนต์ การสืบทอดของวิธีการหลักจะเป็นการถูกแทนที่ เป็นอย่างไรกันบ้างครับ ในบทนี้อาจจะผิดพลาดเรื่องการเขียนพิมพืหรือลืมวงเล็บได้ ฉะนั้นจึงต้องระมัดระวังหน่อยนะครับ
แปลจากhttps://www.w3schools.com/python/python_inheritance.asp



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา