Trong Python, hàm super() được sử dụng chính trong hai trường hợp: | C-n.vn

Trong Python, hàm super() được sử dụng chính trong hai trường hợp:

  • Giúp chúng ta tránh phải sử dụng tên class cơ sở một cách rõ ràng
  • Xử lý Đa kế thừa

Ví dụ 1: Hàm super() với Kế thừa đơn

Trong trường hợp kế thừa đơn, hàm super() giúp chúng ta tham chiều tới class cơ sở.

Ví dụ:

class Mammal(object):
  def __init__(self, mammalName):
    print(mammalName, 'là động vật máu nóng.')
    
class Voi(Mammal):
  def __init__(self):
    print('Voi có 4 chân.')
    super().__init__('Voi')
    
d1 = Voi()

Khi chạy chương trình, kết quả thu được là

Voi có 4 chân.
Voi là động vật máu nóng.

Ở đây, chúng ta gọi method __init__() của lớp Mammal (từ class Voi) bằng đoạn mã:

super().__init__('Voi')

Khi chạy chương trình, kết quả thu được là

Voi có 4 chân.
Voi không thể bơi.
Voi không thể bay.
Voi là động vật máu nóng.
Voi là một loài động vật.

Dơi không thể bơi.
Dơi là động vật máu nóng.
Dơi là một loài động vật.

Phương pháp giải quyết thứ tự (Method Resolution Order - MRO)

MRO là thứ tự các method được kế thừa khi có đa kế thừa. Bạn có thể xem MRO bằng cách sử dụng thuộc tính __mro__.

>>> Voi.__mro__
(<class 'Voi'>, 
<class 'NonMarineMammal'>, 
<class 'NonWingedMammal'>, 
<class 'Mammal'>, 
<class 'Animal'>, 
<class 'object'>)

Đây là cách hoạt động của MRO

  • Một method trong các lệnh dẫn xuất luôn được gọi trước method của class cơ sở. Trong ví dụ của chúng ta, class Voi được gọi trước NonMarineMammal hoặc NonWingedMammal. Hai class này lại được gọi trước class MammalMammal lại được gọi trước Animal, cuối cùng mới đến đối tượng.
  • Nếu có nhiều class cha mẹ như Voi(NonMarineMammal, NonWingedMammal), các method của NonMarineMammal sẽ được gọi trước tiên vì nó xuất hiện đầu tiên.

Để tìm hiểu thêm về các hàm trong Python, mời các bạn truy cập trang web dưới đây:

  • Các hàm Python tích hợp sẵn
  • Hàm sorted() trong Python
  • Hàm setattr() trong Python
  • Hàm repr() trong Python
  • Hàm property() trong Python
Xem thêm bài viết thuộc chuyên mục: Công nghệ
READ:  Dark web là một nơi bí ẩn với một danh tiếng “lẫy lừng”. Việc tìm ra dark web không khó. Tuy nhiên, học cách điều hướng nó một cách an toàn lại là chuyện khác, đặc biệt nếu bạn không biết mình đang làm gì hoặc những gì sẽ xảy ra. | C-n.vn

Có thể bạn quan tâm