Python đổi tên phương thức kế thừa

Trong bài viết trước, chúng ta đã thảo luận về tính kế thừa của Python. Ở đây, hướng dẫn Đa kế thừa Python, chúng ta sẽ thảo luận Đa kế thừa trong Python là gì với các ví dụ và cách sử dụng của nó

Mặt khác, chúng ta sẽ học Python MRO [Method Resolution Order]. Cuối cùng, chúng ta sẽ tìm hiểu các biến chứng trong Đa kế thừa trong ngôn ngữ lập trình Python

Vì vậy, hãy bắt đầu Hướng dẫn đa kế thừa Python

Python đa kế thừa

Đa kế thừa Python là gì?

Đúng như tên gọi của nó, đa kế thừa trong python là khi một lớp kế thừa từ nhiều lớp. Một ví dụ về điều này là một đứa trẻ thừa hưởng những đặc điểm tính cách từ cả cha lẫn mẹ.

Đa kế thừa Python - Ví dụ

Trước khi chúng tôi tiến hành nhiều cú pháp kế thừa, hãy xem cú pháp python

Cú pháp đa kế thừa Python

Để tạo một lớp kế thừa từ nhiều lớp python, chúng ta viết tên của các lớp này bên trong dấu ngoặc đơn cho lớp dẫn xuất khi định nghĩa nó

Chúng tôi phân tách các tên này bằng dấu phẩy

Mã cho ví dụ trước sẽ là

>>> class Mother:
                pass
>>> class Father:
                pass
>>> class Child[Mother,Father]:
                pass
>>> issubclass[Child,Mother] and issubclass[Child,Father]

đầu ra

Thật

Python MRO [Thứ tự giải quyết phương thức]

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 kế thừa 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

Vì vậy, trong lớp trên, thứ tự tìm kiếm sẽ là – Con, Mẹ, Cha, Đối tượng

Thứ tự này được gọi là tuyến tính hóa của lớp Con và tập hợp các quy tắc được áp dụng được gọi là MRO [Thứ tự giải quyết phương pháp]

Để lấy MRO của một lớp, bạn có thể sử dụng thuộc tính __mro__ hoặc phương thức mro[]

>>> Child.__mro__

đầu ra

[, , , ]

Thuộc tính __mro__ trả về một bộ, nhưng phương thức mro[] trả về một danh sách python

>>> Child.mro[]

đầu ra

[, , , ]

Để lấy một ví dụ phức tạp hơn cũng thể hiện tìm kiếm theo chiều sâu, chúng tôi lấy 6 lớp

>>> class X:pass
>>> class Y: pass
>>> class Z:pass
>>> class A[X,Y]:pass
>>> class B[Y,Z]:pass
>>> class M[B,A,Z]:pass
>>> M.mro[]

đầu ra

[, , , , , , ]

Chúng ta có thể biểu diễn điều này bằng sơ đồ sau

Python Đa kế thừa – Thứ tự phân giải phương thức [MRO]

Đầu tiên, trình thông dịch quét M. Sau đó, nó quét B, rồi A-B trước do thứ tự của các đối số tại thời điểm kế thừa

Nó quét Z sau, sau X và Y. Thứ tự là- X, rồi Y, rồi Z. Điều này là do tìm kiếm theo chiều sâu, X đến trước A

Cuối cùng, nó quét đối tượng lớp. Do đó, thứ tự

Các biến chứng trong Python Đa kế thừa

Điều gì xảy ra khi các lớp mà chúng ta kế thừa đều có một thuộc tính chung?

Hãy học ba lớp A, B và C

>>> class A:
                id=1            
>>> class B:
                id=2             
>>> class C:
                id=3              
>>> class M[A,C,B]:
                pass
>>> M.id

đầu ra

1

>>> M.id

đầu ra

1

>>> class M[C,B,A]:
                pass
>>> M.id

đầu ra

3

Như chúng ta thấy ở đây, lớp có tên đầu tiên trong thừa kế chuyển giá trị của nó cho lớp con để lấy thuộc tính chung

Trước đó, đó là A, vì vậy, M có id=1. Sau đó, khi chúng tôi đổi nó thành C, M nhận id=3. Điều này cũng tương tự với các phương thức/hàm Python của lớp

________số 8_______

đầu ra

A

Vì vậy, đây là tất cả về Hướng dẫn đa kế thừa Python. Hy vọng bạn thích lời giải thích của chúng tôi về Python MRO

Câu hỏi phỏng vấn Python về đa kế thừa

  1. Làm thế nào để bạn đạt được đa kế thừa trong Python?
  2. Khi nào chúng ta nên sử dụng đa kế thừa trong Python?
  3. Những ưu điểm và nhược điểm của đa kế thừa Python là gì?
  4. Đa kế thừa Python là gì?
  5. Đa kế thừa Python hoạt động như thế nào?

Phần kết luận

Do đó, trong hướng dẫn này, chúng ta đã thảo luận về tính đa thừa kế của python, cú pháp và các ví dụ của nó

Chúng tôi cũng đã nói về Thứ tự giải quyết phương pháp [MRO] và lần cuối cùng chúng tôi thảo luận, các biến chứng trong nhiều kế thừa trong python

Bạn có thể đổi tên một hàm trong Python không?

Với từ def định nghĩa một hàm, vâng, đổi tên là một hàm . Cách duy nhất để đổi tên một chức năng là thay đổi mã.

Các phương thức lớp có thể được kế thừa Python không?

Tính kế thừa cho phép chúng ta định nghĩa một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác . Lớp cha là lớp được kế thừa từ đó, còn được gọi là lớp cơ sở. Lớp con là lớp kế thừa từ lớp khác, còn gọi là lớp dẫn xuất.

Các thuộc tính của lớp có thể được kế thừa không?

Các đối tượng được định nghĩa bởi các lớp, các lớp có thể kế thừa các thuộc tính và hành vi từ các lớp có sẵn . Các lớp kết quả được gọi là lớp dẫn xuất hoặc lớp con. Một lớp con “kế thừa” tất cả các thuộc tính [phương thức, v.v.] của lớp cha.

Lớp con kế thừa từ lớp cha trong Python là gì?

Một lớp con kế thừa mọi thứ từ lớp cha của nó, được gọi là kế thừa trong phương pháp hướng đối tượng và lập trình hướng đối tượng. Bằng sự kế thừa, các thuộc tính của lớp cha sẽ không lặp lại trong bất kỳ lớp con nào của nó.

Chủ Đề