Thứ tự thực hiện hàm tạo trong python kế thừa

Trong bài viết này, tôi sẽ thảo luận về Tính kế thừa trong Python với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về Các loại phương thức lớp trong Python. Là một phần của bài viết này, chúng ta sẽ thảo luận về các gợi ý sau có liên quan đến Tính kế thừa trong Python

  1. Kế thừa là gì?
  2. Ưu điểm của thừa kế
  3. Thực hiện kế thừa trong Python
  4. Kế thừa đơn trong Python
  5. Kế thừa đa cấp
  6. Đa thừa kế
  7. Điều gì xảy ra nếu cả hai lớp cha có một phương thức có cùng tên?
  8. Constructor trong thừa kế
  9. Chúng ta có thể gọi hàm tạo siêu hạng từ hàm tạo của lớp con không?
Kế thừa trong Python là gì

Thừa kế, nói chung, là việc chuyển tài sản cho ai đó. Trong các ngôn ngữ lập trình, khái niệm kế thừa đi kèm với các lớp

  1. Tạo các lớp mới từ các lớp đã tồn tại được gọi là kế thừa
  2. Lớp hiện có được gọi là siêu lớp hoặc lớp cơ sở hoặc lớp cha
  3. Lớp mới được gọi là lớp con hay lớp dẫn xuất hay lớp con
  4. Kế thừa cho phép các lớp con kế thừa các biến, phương thức và hàm tạo của siêu lớp của chúng
Ưu điểm của thừa kế
  1. Ưu điểm chính của kế thừa là khả năng sử dụng lại mã
  2. Thời gian dành cho phát triển ứng dụng sẽ ít hơn
  3. Dự phòng [lặp lại] của mã có thể được giảm
Thực hiện kế thừa trong Python

Khi khai báo lớp con, chúng ta cần chuyển tên siêu lớp vào dấu ngoặc đơn của lớp con

Chương trình. Triển khai kế thừa [demo1. py]

class One:
   def m1[self]:
       print["Parent class m1 method"]
class Two[One]:
   def m2[self]:
       print["Child class m2 method"]
c = Two[]
c.m1[]
c.m2[]

đầu ra

Các loại kế thừa trong Python

Có nhiều loại thừa kế, chúng là

  1. thừa kế duy nhất
  2. kế thừa đa cấp
  3. đa thừa kế
KẾ HOẠCH DUY NHẤT trong PYTHON

Tạo một lớp con hoặc lớp con từ một lớp cha/lớp cha duy nhất được gọi là kế thừa đơn. Biểu diễn sơ đồ của Python Single Inheritance được đưa ra bên dưới

Chương trình. Kế thừa đơn [demo2. py]

class A:
   def m1[self]:
       print["A class m1 Method"]
class B[A]:
   def m2[self]:
       print["Child B is derived from A class: m2 Method"]
obj=B[]
obj.m1[]
obj.m2[]

đầu ra

KẾ HOẠCH ĐA CẤP TRONG PYTHON

Nếu một lớp được dẫn xuất từ ​​một lớp dẫn xuất khác thì nó được gọi là kế thừa đa cấp. Biểu diễn sơ đồ của Kế thừa đa cấp Python được đưa ra bên dưới

Chương trình. Kế thừa đa cấp [demo3. py]

class A:
   def m1[self]:
       print["Parent class A: m1 Method"]
class B[A]:
   def m2[self]:
       print["Child class B derived from A: m2 Method"]
class C[B]:
   def m3[self]:
       print["Child class C derived from B: m3 Method"]
obj=C[]
obj.m1[]
obj.m2[]
obj.m3[]

đầu ra

NHIỀU KẾ HOẠCH TRONG PYTHON

Nếu một lớp con được dẫn xuất từ ​​nhiều lớp cha thì nó được gọi là đa kế thừa. Biểu diễn sơ đồ của Đa kế thừa được đưa ra dưới đây

Chương trình. Đa kế thừa [demo4. py]

class P1:
   def m1[self]:
       print["Parent1 Method"]
class P2:
   def m2[self]:
       print["Parent2 Method"]
class C[P1, P2]:
   def m3[self]:
       print["Child Method"]
c=C[]
c.m1[]
c.m2[]
c.m3[]

đầu ra

Điều gì xảy ra nếu cả hai lớp cha có một phương thức có cùng tên?

Có thể có khả năng hai lớp cha có thể chứa các phương thức có cùng tên phương thức trong cả hai lớp. Về mặt cú pháp, điều này là hợp lệ

Chương trình. Các lớp cha có cùng tên phương thức [demo5. py]

class P1:
   def m1[self]:
       print["Parent1 Method"]
class P2:
   def m1[self]:
       print["Parent2 Method"]
class C[P1, P2]:
   def m2[self]:
       print["Child Method"]
c=C[]
c.m2[]

đầu ra.  

Trong kịch bản trên, lớp con sẽ kế thừa phương thức nào?

Câu trả lời cho điều này phụ thuộc vào thứ tự kế thừa của các lớp cha trong lớp con

  1. lớp C[P1, P2]. ===>Phương thức của lớp P1 sẽ được xem xét
  2. lớp C[P2, P1]. ===>Phương thức của lớp P2 sẽ được xem xét

Chương trình. bản demo5. py contd

class P1:
   def m1[self]:
       print["Parent1 Method"]
class P2:
   def m1[self]:
       print["Parent2 Method"]
class C[P1, P2]:
   def m2[self]:
       print["Child Method"]
c=C[]
c.m2[]
c.m1[]

đầu ra

Chương trình. Kịch bản khác của demo5. py

class P1:
   def m1[self]:
       print["Parent1 Method"]
class P2:
   def m1[self]:
       print["Parent2 Method"]
class C[P2, P1]:
   def m2[self]:
       print["Child Method"]
c=C[]
c.m2[]
c.m1[]

đầu ra

CONSTRUCTOR trong INHERITANCE

Theo mặc định, hàm tạo của siêu lớp sẽ có sẵn cho lớp con

Chương trình. demo6. py

class A:
   def __init__[self]:
       print["super class A constructor"]

class B[A]:
   def m1[]:
       print["Child Class B: m1 method from B"]

b=B[]

đầu ra.  

Nếu cả lớp con và siêu lớp đều có hàm tạo, thì?

Nếu cả lớp con và siêu lớp đều có hàm tạo, nếu bạn tạo một đối tượng cho lớp con thì hàm tạo của lớp con sẽ được thực thi. Trong khi tạo đối tượng cho một lớp, hàm tạo của lớp đó được ưu tiên hàng đầu

Chương trình. demo7. py

________số 8

đầu ra.  

Chúng ta có thể gọi hàm tạo siêu hạng từ hàm tạo của lớp con không?

Có, chúng ta có thể gọi hàm tạo siêu hạng từ hàm tạo của lớp con bằng cách sử dụng hàm super[]. super[] là một hàm được xác định trước, rất hữu ích để gọi các hàm tạo, biến và phương thức của lớp cha từ lớp con

Chương trình. demo8. py

class A:
   def __init__[self]:
       print["super class A constructor"]

class B[A]:
   def __init__[self]:
       print["Child class B constructor"]
       super[].__init__[]
  
b=B[]

đầu ra

Trong bài viết tiếp theo, tôi sẽ thảo luận về Thứ tự giải quyết phương pháp [MRO] trong Python. Ở đây, trong bài viết này, tôi cố gắng giải thích Tính kế thừa trong Python bằng các ví dụ. Tôi hy vọng bạn thích bài viết Kế thừa trong Python với các ví dụ này. Tôi muốn có phản hồi của bạn. Vui lòng gửi phản hồi, câu hỏi hoặc nhận xét của bạn về bài viết này

Thứ tự thực hiện hàm tạo trong kế thừa là gì?

Trình tạo của các lớp cơ sở Ảo được thực thi, theo thứ tự xuất hiện trong danh sách cơ sở . Các hàm tạo của các lớp cơ sở không ảo được thực thi, theo thứ tự khai báo. Hàm tạo của các thành viên lớp được thực thi theo thứ tự khai báo [bất kể thứ tự của chúng trong danh sách khởi tạo].

Thứ tự thừa kế có quan trọng trong Python không?

Khi chúng tôi tìm kiếm một thuộc tính trong một lớp có liên quan đến tính đa thừa kế của python, một thứ tự sẽ được tuân theo . Đầu tiên, nó được tìm kiếm trong lớp hiện tại. Nếu không tìm thấy, tìm kiếm sẽ chuyển sang các lớp cha. Đây là từ trái sang phải, độ sâu đầu tiên.

Cái nào thực hiện trước hàm tạo cha hoặc hàm con?

Trường hợp-1. Trình tự gọi hàm tạo trong java thừa kế đơn . the parent constructor gets called first, then of the child class.

Thứ tự nào sau đây là đúng thứ tự mà các hàm tạo được gọi?

Trả lời. Thứ tự gọi hàm tạo trong C++ sẽ là từ trên xuống dưới tức là từ lớp cơ sở đến lớp dẫn xuất và thứ tự gọi hàm hủy trong C++ sẽ theo thứ tự ngược lại.

Chủ Đề