Việc sử dụng hàm super() trong kế thừa python là gì?

Ví dụ sau minh họa cách lớp dẫn xuất có thể gọi lớp cơ sở bằng cách sử dụng phương thức super[]

Ví dụ

Sao chép

class person:
    def __init__[self, firstname, lastname]:
        self.firstname = firstname
        self.lastname = lastname
    def fullname[self]:
        print[firstname, ' ', lastname]
    
class student[person]:
    def __init__[self, firstname, lastname, grade]:
        self.grade = grade
        super[].__init__[firstname, lastname] # calling base constructor
    def display_details[]:
        super[].fullname[] # calling base class method
        print['Grade ', self.grade]
        
std = student['James', 'Bond', '10']
std.display_details[]

đầu ra

James Bond
Grade 10

Trong ví dụ trên, super[].__init__[firstname, lastname] trong phương thức init của lớp student gọi phương thức init của lớp cơ sở person và truyền tham số. Theo cách tương tự, super[].fullname[] gọi phương thức person.fullname[]. super[].fullname[] có thể được gọi là

class person:
    def __init__[self, firstname, lastname]:
        self.firstname = firstname
        self.lastname = lastname
    def fullname[self]:
        print[firstname, ' ', lastname]
    
class student[person]:
    def __init__[self, firstname, lastname, grade]:
        self.grade = grade
        super[].__init__[firstname, lastname] # calling base constructor
    def display_details[]:
        super[].fullname[] # calling base class method
        print['Grade ', self.grade]
        
std = student['James', 'Bond', '10']
std.display_details[]
0

Như chúng ta đã biết Python là một ngôn ngữ lập trình hướng đối tượng. Do đó, Python tuân theo tất cả các khái niệm về OOP và một trong những khái niệm đó là tính kế thừa

Trong khi sử dụng khái niệm kế thừa, chúng ta có thể tham chiếu đến một lớp cha bằng cách sử dụng hàm super[] bên trong lớp kế thừa hoặc lớp con. Hàm super[] mà chúng ta sử dụng trong lớp con trả về một đối tượng được tạo tạm thời của lớp cha, cho phép chúng ta truy cập tất cả các phương thức của nó có trong lớp con

Lợi ích của hàm super[]

Sau đây là những lợi ích của việc sử dụng hàm super[] trong lớp con

  • Chúng ta không cần nhớ tên lớp cha khi sử dụng hàm super[]. Điều này là do chúng ta không phải chỉ định tên của lớp cha để truy cập các phương thức có trong nó
  • Chúng ta có thể sử dụng hàm super[] với đơn thừa kế và đa thừa kế
  • Hàm super[] trong Python thực hiện khả năng sử dụng lại mã và mô đun hóa vì chúng ta không cần phải viết lại toàn bộ hàm nhiều lần
  • Hàm super[] trong Python được gọi là hàm động, như chúng ta đều biết Python là ngôn ngữ lập trình kiểu động

Những ràng buộc khi sử dụng hàm super[]

Sau đây là ba ràng buộc mà chúng ta phải tuân theo để sử dụng hàm super[] trong chương trình Python

  • Các đối số được đưa ra trong hàm super[] và các đối số trong hàm mà chúng ta đã gọi phải khớp với nhau
  • Mỗi lần xuất hiện của phương thức mà chúng tôi đang sử dụng phải bao gồm từ khóa super[] sau khi chúng tôi sử dụng nó
  • Chúng ta phải chỉ định lớp và các phương thức có trong nó, được gọi bởi hàm super[]

Bây giờ, như chúng ta đã biết, chúng ta có thể sử dụng hàm super[] trong cả hai kiểu thừa kế trong Python, tôi. e. , đơn lẻ cũng như đa thừa kế. Vì vậy, chúng ta sẽ tìm hiểu về cách sử dụng hàm super[] trong cả hai kiểu thừa kế riêng biệt và với một ví dụ

Sử dụng hàm super[] trong kế thừa đơn trong Python

Trong ví dụ này, chúng tôi sẽ sử dụng động vật làm tham chiếu cho một ví dụ thừa kế duy nhất

Mèo, ngựa, bò, chó, v.v. , tất cả đều thuộc lớp động vật. Tất cả chúng đều có chung một số đặc điểm

  • Tất cả chúng đều là thú cưng
  • Tất cả chúng đều có bốn chân và một cái đuôi
  • Là một phần của lớp động vật, tất cả chúng đều là động vật có vú

Vì vậy, chúng ta có thể nói rằng lớp mèo, lớp ngựa và lớp chó là các lớp con của lớp động vật. Đây là một ví dụ về kế thừa đơn vì tất cả các lớp con [lớp mèo, lớp ngựa và lớp chó] chỉ được kế thừa từ một lớp cha duy nhất, i. e. , lớp động vật. Bây giờ, hãy xem chương trình sau

Ví dụ -

đầu ra

The given animal is a mammal type.
The given animal is a domestic animal type.
The given animal has four legs and a tail.

Giải trình

Trong đoạn mã trên, chúng ta đã định nghĩa động vật là lớp cha và kế thừa lớp gia đình, đuôi & chân và động vật có vú từ lớp đó. Sau đó, chúng ta đã định nghĩa lớp mèo, ngựa và chó và sử dụng siêu hàm trong đó. Với sự trợ giúp của hàm super[] trong các lớp này, chúng ta đã truy cập các phương thức của lớp động vật trong lớp mèo, ngựa và chó

Sử dụng hàm super[] trong nhiều kế thừa trong Python

Trong ví dụ này, chúng ta sẽ sử dụng một lớp cha, i. e. , lớp thú. Sau đó, chúng ta sẽ kế thừa các lớp 'Có thể bay' và 'Có thể bơi' từ lớp động vật có vú

Các lớp này sẽ đại diện cho việc một động vật có vú nhất định có thể bay hay không và có thể bơi hay không. Sau đó, chúng tôi sẽ xác định một lớp động vật và nó sẽ kế thừa từ cả hai lớp 'Có thể bay' và 'Có thể bơi' và trả về cho chúng tôi rằng con vật đã cho có các đặc điểm đã xác định hay không

Vì vậy, chúng ta có thể thấy rằng lớp động vật mà chúng ta đang sử dụng ở đây được kế thừa từ nhiều lớp cơ sở và do đó, nó là một ví dụ về tính đa kế thừa trong Python. Bây giờ, hãy xem chương trình sau

Ví dụ

đầu ra

Cat is not capable of flying
Cat is not capable of swimming
Cat Is a mammal of animalia class

Giải trình

Trong đoạn mã trên, chúng tôi đã định nghĩa động vật có vú là một lớp cha. Sau đó, chúng ta kế thừa các lớp có thể bay và có thể bơi từ lớp động vật có vú. Chúng tôi đã sử dụng các phương thức của cả hai có thể bay và có thể bơi bên trong lớp động vật với sự trợ giúp của hàm super[]. Lớp động vật được kế thừa từ cả lớp biết bơi và biết bay

Siêu trong kế thừa Python là gì?

Hàm super[] của Python trả về các đối tượng được biểu diễn trong lớp của cha mẹ và rất hữu ích trong các kế thừa đa cấp và đa cấp để tìm ra lớp nào .

Phương thức super[] đóng vai trò quan trọng như thế nào trong thừa kế?

Trăn. super[] trong thừa kế đơn . Kế thừa, ghi đè hàm Ở mức khá trừu tượng, super[] cung cấp quyền truy cập vào các phương thức của lớp cha [lớp cha] đã bị ghi đè trong lớp con [lớp con] . .

Siêu [] có cần thiết Python không?

Nói chung là cần thiết . Và nó thường là lệnh gọi đầu tiên trong init của bạn. Đầu tiên nó gọi hàm init của lớp cha [ dict ]. Nó thường tạo cấu trúc dữ liệu cơ bản của nó.

Đối số của super[] trong Python là gì?

Hàm super[] của Python cho phép chúng ta tham chiếu đến lớp cha một cách rõ ràng . Nó hữu ích trong trường hợp kế thừa mà chúng ta muốn gọi các hàm siêu hạng.

Chủ Đề