• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Kiến thức tổng hợp Lập trình

Hàm super() trong Python

@admiz by @admiz
26/12/2021
in Lập trình
0

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')

thay vì sử dụng:

Mammal.__init__(self, 'Voi')

Vì chúng ta không cần sử dụng tên của class cơ sở khi gọi các đối tượng bên trong nó nên khi cần chúng ta có thể đổi tên class một cách dễ dàng.

Ví dụ đổi tên class Mammal:

# đổi tên class Mammal thành Elephantidae
class Voi(Elephantidae):
  def __init__(self):
    print('Voi có 4 chân.')

    # chúng ta không cần thay đổi dòng code này
    super().__init__('Voi')
Hàm super() trong Python trả về một đối tượng proxy (đối tượng tạm thời của một siêu class) cho phép chúng ta truy cập các method của class cơ sở.
Hàm super() trong Python trả về một đối tượng proxy (đối tượng tạm thời của một siêu class) cho phép chúng ta truy cập các method của class cơ sở.

Hàm super() trả về một đối tượng proxy, một dạng đối tượng thay thế có thể gọi các method của class cơ sở thông qua ủy quyền. Đây được gọi là phương thức gián tiếp (khả năng tham chiếu một đối tượng cơ sở với hàm super()).

Vì phương thức tham chiếu gián tiếp này chỉ được sử dụng trong thời gian chạy chương trình nên chúng ta có thể sử dụng các class cơ sở khác nhau vào các thời điểm khác nhau nếu cần.

Ví dụ 2: Hàm super() với Đa kế thừa

Chúng ta hãy cùng xem đoạn code sau:

class Animal:
  def __init__(self, Animal):
    print(Animal, 'là một loài động vật.');

class Mammal(Animal):
  def __init__(self, mammalName):
    print(mammalName, 'là động vật máu nóng.')
    super().__init__(mammalName)
    
class NonWingedMammal(Mammal):
  def __init__(self, NonWingedMammal):
    print(NonWingedMammal, "không thể bay.")
    super().__init__(NonWingedMammal)

class NonMarineMammal(Mammal):
  def __init__(self, NonMarineMammal):
    print(NonMarineMammal, "không thể bơi.")
    super().__init__(NonMarineMammal)

class Voi(NonMarineMammal, NonWingedMammal):
  def __init__(self):
    print('Voi có 4 chân.');
    super().__init__('Voi')
    
d = Voi()
print('')
bat = NonMarineMammal('Dơi')

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 Mammal và Mammal 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
Post Views: 219
Tags: Hàm super()Hàm super() trong Pythonpythonsuper() trong Python
Previous Post

Hàm sprintf() trong C

Next Post

Lệnh SELECT INTO trong SQL Server

Related Posts

Dien Tich Tam Giac 640 1
Lập trình

Công thức tính diện tích tam giác: vuông, thường, cân, đều

26/12/2021
Huong Dan Cai Dat Node Js 640 1
Lập trình

Hướng dẫn cài đặt Node.js

26/12/2021
Cau Truc Du Lieu Hang Doi Queue 640 1
Lập trình

Cấu trúc dữ liệu hàng đợi (Queue)

26/12/2021
Hoc Css 640 8
Lập trình

Thanh điều hướng – Navigation Bar trong CSS

26/12/2021
Ms Sql Server Management Studio 640 3
Lập trình

Quản lý MS SQL Server bằng Management Studio

26/12/2021
Java Development Kit 1
Lập trình

Tải Java Development Kit 8-update-281

26/12/2021
Next Post

Lệnh SELECT INTO trong SQL Server

Bài mới nhất

4 Lưu ý Khi Sử Dụng Email Marketing Hiệu Quả Tránh Spam Cho Doanh Nghiệp 612d0db271290.jpeg

4 Lưu ý khi sử dụng email marketing hiệu quả tránh spam cho doanh nghiệp

07/05/2025
Tổng Hợp 10 Mẫu Email Marketing Giới Thiệu Sản Phẩm Nổi Bật Nhất Hiện Nay 612d0da97658c.png

Tổng hợp 10 mẫu email marketing giới thiệu sản phẩm nổi bật nhất hiện nay

07/05/2025
Dịch Vụ Thiết Kế Website Tại Hải Dương Chuyên Nghiệp, ấn Tượng Và Uy Tín 612d25752b14f.png

Dịch vụ thiết kế website tại Hải Dương chuyên nghiệp, ấn tượng và uy tín

06/05/2025
Top Công Ty Thiết Kế Website Tại Biên Hòa Chuyên Nghiệp, Chuẩn Seo 612d259494e93.jpeg

Top công ty thiết kế website tại Biên Hòa chuyên nghiệp, chuẩn SEO

06/05/2025
Top Công Ty Thiết Kế Website Tại Vinh – Nghệ An Uy Tín 612d259a9cae3.jpeg

Top công ty thiết kế website tại Vinh – Nghệ An uy tín

05/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution