Python รวมเข้าใน

Python รวมเข้าใน

การสืบทอดอนุญาตให้เราสร้างชั้นที่สามารถสืบทอดทุกหน้าต่างและคุณสมบัติจากชั้นอื่น:

หลักเชื่อมเป็นชั้นที่สืบทอดมา และเรียกว่าหลักเชื่อม

ชั้นที่สืบทอดเป็นชั้นที่สืบทอดมาจากชั้นอื่น ๆ และเรียกว่าชั้นที่สืบทอด

สร้างหลักเชื่อม

ชั้นเดี่ยวก็สามารถเป็นหลักเชื่อม ดังนั้นบทบาทของมันในการสร้างชั้นเดี่ยวเหมือนกับการสร้างชั้นเดี่ยวอื่นใด:

ตัวอย่าง

สร้างชั้น Person ซึ่งมีคุณสมบัติ firstname และ lastname และหน้าต่างภายนอก printname:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
# สร้างวัตถุโดยใช้ Person และปฏิบัติการฟังก์ชัน printname:
x = Person("Bill", "Gates")
x.printname()

ปฏิบัติตัวอย่าง

สร้างลูกหลัง

เพื่อสร้างระบุรายละเอียดที่สืบทอดความสำคัญจากองค์ประกอบพื่อน โปรดส่งองค์ประกอบพื่อนเป็นตัวอุปกรณ์ในการสร้างลูกหลัง:

ตัวอย่าง

สร้างระบุรายละเอียด Student ที่สืบทอดรายละเอียดและวิธีจากระบุรายละเอียด Person:

class Student(Person):
  pass

หมายเหตุ:ถ้าคุณไม่ต้องการเพิ่มรายละเอียดหรือวิธีอื่นๆ ให้ใช้ pass ในคำสั่ง)

ตอนนี้ ระบุรายละเอียด Student มีรายละเอียดและวิธีเหมือนกับระบุรายละเอียด Person

ตัวอย่าง

สร้างวัตถุโดยใช้ระบุรายละเอียด Student และปฏิบัติการฟังก์ชัน printname:

x = Student("Elon", "Musk")
x.printname()

ปฏิบัติตัวอย่าง

เพิ่มฟังก์ชัน __init__()

จนบัดนี้ เราได้สร้างลูกหลังที่สืบทอดรายละเอียดและวิธีขององค์ประกอบพ่อ

เราต้องการที่จะเพิ่ม __init__() ฟังก์ชันเพิ่มเข้าสู่ลูกหลัง (ไม่ใช่ pass ในคำสั่ง)

หมายเหตุ:ในทุกครั้งที่คุณใช้ระบุรายละเอียดเพื่อสร้างวัตถุใหม่ ฟังก์ชัน __init__() จะทำการเรียกโดยอัตโนมัติ

ตัวอย่าง

เพิ่มฟังก์ชัน __init__() สำหรับระบุรายละเอียด Student:

class Student(Person):
  def __init__(self, fname, lname):
    # เพิ่มรายละเอียดต่างๆ

เมื่อคุณเพิ่มฟังก์ชัน __init__() ลูกหลังจะไม่สืบทอดฟังก์ชัน __init__() ขององค์ประกอบพ่อ

หมายเหตุ:ฟังก์ชัน __init__() ของลูกจะทำให้ลบการสืบทอดฟังก์ชัน __init__() ขององค์ประกอบพ่อ

ถ้าคุณต้องการที่จะรักษาการสืบทอดฟังก์ชัน __init__() ขององค์ประกอบพ่อ โปรดเพิ่มการเรียกฟังก์ชัน __init__() ขององค์ประกอบพ่อ:

ตัวอย่าง

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

ปฏิบัติตัวอย่าง

ตอนนี้ เราได้เพิ่มฟังก์ชัน __init__() แล้วและรักษาการสืบทอดจากองค์ประกอบพ่อ และเราเตรียมพร้อมที่จะเพิ่มความสำคัญในฟังก์ชัน __init__()

ใช้ฟังก์ชัน super()

Python ยังมี super() ฟังก์ชัน มันจะทำให้ลูกหลังสืบทอดทุกวิธีและรายละเอียดจากองค์ประกอบพ่อ:

ตัวอย่าง

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

ปฏิบัติตัวอย่าง

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

เพิ่มรายละเอียด

ตัวอย่าง

เพิ่มวิธีชื่อ graduationyear ของคุณเพิ่มเติมเข้าสู่ Student ระบุรายละเอียด

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

ปฏิบัติตัวอย่าง

ในตัวอย่างนี้ ปี 2019 ควรเป็นตัวแปร และส่งค่าปีนี้ไปยังชั้น Student โดยใช้ __init__() ดังนี้:

ตัวอย่าง

เพิ่ม year จำกัดค่าตั้งต้น และส่งค่าปีที่ถูกต้องเมื่อสร้างตัวแทน

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year
x = Student("Elon", "Musk", 2019)

ปฏิบัติตัวอย่าง

เพิ่มวิธี

ตัวอย่าง

เพิ่มวิธีชื่อ welcome เพิ่มวิธีที่มีชื่อเดียวกับวิธีนี้เข้าในชั้น Student:

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)

ปฏิบัติตัวอย่าง

คำเตือน:หากคุณเพิ่มวิธีที่มีชื่อเดียวกับวิธีในหลักเมื่ออยู่ในชั้นย่อย วิธีนี้จะทำให้ลบวิธีที่ได้รับมาจากเชื้อเลือด