Nạp chồng hàm và ghi đè hàm trong Python là gì?

Quá tải phương thức Vs. Ghi đè phương thức. Sự khác biệt giữa Nạp chồng Phương thức và Ghi đè Phương thức trong Python là gì?

Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau trong đó nạp chồng phương thức và ghi đè phương thức khác nhau như thế nào. Nhưng trước tiên chúng ta hãy đi sâu vào các nguyên tắc cơ bản của cả hai trước khi thảo luận về sự khác biệt chính giữa nạp chồng phương thức và ghi đè phương thức

Quá tải phương thức trong Python là gì?

Nó là một dạng đa hình thời gian biên dịch. Trong trường hợp nạp chồng phương thức, nhiều hơn một phương thức thuộc về một lớp có thể chia sẻ một tên phương thức giống nhau trong khi có các chữ ký khác nhau. Người ta có thể sử dụng nạp chồng phương thức để thêm nhiều hơn vào hành vi của các phương thức liên quan. Người dùng sẽ không cần nhiều hơn một lớp để triển khai nó

Lưu ý - Python không cung cấp bất kỳ hỗ trợ nào cho nạp chồng phương thức. Người dùng có thể quá tải tất cả các phương thức, nhưng họ sẽ chỉ có khả năng sử dụng phương thức được xác định mới nhất

Ghi đè phương thức trong Python là gì?

Nó là một loại đa hình thời gian chạy. Trong trường hợp ghi đè phương thức, lớp con cung cấp cách triển khai cụ thể của bất kỳ phương thức nào [mà lớp cha đã cung cấp]. Ghi đè phương thức hỗ trợ người dùng thay đổi hành vi của các phương thức hiện có. Một người cần ít nhất hai lớp để thực hiện nó. Tính kế thừa cũng là điều kiện tiên quyết trong ghi đè phương thức. Đó là bởi vì nó xảy ra giữa cả hai phương thức- lớp cha [lớp cha] và lớp con

Sự khác biệt giữa Nạp chồng Phương thức và Ghi đè Phương thức trong Python

Nạp chồng tham sốMethod trong JavaMethod Overriding trong JavaDefinitionTrong quá trình nạp chồng phương thức, tất cả các hàm hoặc phương thức phải chứa cùng một tên với các chữ ký khác nhau. Trong quá trình ghi đè phương thức, tất cả các hàm hoặc phương thức phải có cùng tên cùng với các chữ ký tương tự. Loại đa hình Nó thuộc về đa hình thời gian biên dịch. Nó xuất hiện dưới dạng đa hình thời gian chạy. Kế thừa Một người có thể hoặc không yêu cầu kế thừa trong trường hợp nạp chồng phương thức. Kế thừa là điều kiện tiên quyết trong trường hợp ghi đè phương thức. PerformanceOne có thể thực hiện nạp chồng phương thức giữa các phương thức nằm trong một lớp. Người ta có thể thực hiện ghi đè phương thức giữa cả phương thức - lớp con và lớp cha [hoặc lớp cha]. Sử dụng và triển khai Chúng tôi sử dụng nạp chồng phương thức để bổ sung thêm vào hành vi của tất cả các phương thức. Chúng tôi sử dụng ghi đè phương thức để thay đổi hành vi của các phương thức đã tồn tại. Số lớp Một người dùng sẽ không cần nhiều hơn một lớp để triển khai nạp chồng phương thức. Người dùng sẽ luôn yêu cầu ít nhất hai lớp để thực hiện ghi đè phương thức. Nó luôn hoạt động với nhiều hơn một lớp

Hãy tiếp tục học và theo dõi để nhận thông tin cập nhật mới nhất về Kỳ thi GATE cùng với Tiêu chí đủ điều kiện của GATE, GATE 2023, Thẻ nhập học GATE, Mẫu đơn đăng ký GATE, Giáo trình GATE, GATE Cut off, GATE Câu hỏi năm trước, v.v.

Ghi đè phương thức trong Python là khi bạn có hai phương thức có cùng tên, mỗi phương thức thực hiện các tác vụ khác nhau. Ghi đè phương thức là một khả năng của bất kỳ ngôn ngữ lập trình hướng đối tượng nào cho phép một lớp con hoặc lớp con cung cấp một triển khai cụ thể của một phương thức đã được cung cấp bởi một trong các lớp cha hoặc lớp cha của nó. Khi một phương thức trong lớp con có cùng tên, cùng tham số hoặc chữ ký và cùng kiểu trả về [hoặc kiểu con] như một phương thức trong siêu lớp của nó, thì phương thức trong lớp con được cho là sẽ ghi đè phương thức trong siêu lớp.

Mã nguồn

# Function Overriding
class Employee:
    def WorkingHrs[self]:
        self.hrs = 50
 
    def printHrs[self]:
        print["Total Working Hrs : ", self.hrs]
 
 
class Trainee[Employee]:
    def WorkingHrs[self]:
        self.hrs = 60
 
    def resetHrs[self]:
        super[].WorkingHrs[]
 
 
employee = Employee[]
employee.WorkingHrs[]
employee.printHrs[]
 
trainee=Trainee[]
trainee.WorkingHrs[]
trainee.printHrs[]
# Reset Trainee Hrs
trainee.resetHrs[]
trainee.printHrs[]
Để tải xuống tệp thô Bấm vào đây

đầu ra

Total Working Hrs :  50
Total Working Hrs :  60
Total Working Hrs :  50

Danh sách chương trình

Chương trình mẫu

Kết nối cơ sở dữ liệu Python

bình trăn

Hướng dẫn Python Tkinter

Trong hướng dẫn Python này, chúng ta nói về thừa kế Python và các loại kế thừa trong python với cú pháp của chúng

Hơn nữa, chúng ta sẽ nghiên cứu siêu hàm Python, ghi đè phương thức Python và nạp chồng phương thức Python

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

Hướng dẫn kế thừa Python- Nạp chồng phương thức & Ghi đè phương thức

Kế thừa trong Python là gì?

Một thực tế phổ quát là mỗi học sinh là một người. Đây là nhận thức muộn màng của những học sinh không phải con người nếu có. Để mô tả mối quan hệ này, chúng tôi lấy một minh họa

Kế thừa Python – Minh họa

Mối quan hệ giữa người với học sinh được gọi là 'Chuyên môn hóa' . Ngược lại, mỗi học sinh là một con người, đây gọi là Khái quát hóa.

Trong biểu diễn này, chúng tôi sử dụng một mũi tên hướng tới lớp cơ sở làm quy ước UML [Ngôn ngữ mô hình hóa thống nhất]

Ở đây, Người có thể được gọi là bất kỳ điều nào sau đây

  • siêu hạng
  • lớp phụ huynh
  • lớp cơ sở

Tương tự như vậy, Sinh viên ở đây là

  • lớp phụ
  • lớp con
  • Lớp có nguồn gốc

Cú pháp kế thừa Python

Để tạo một lớp kế thừa từ một lớp khác, chúng ta áp dụng tên của lớp cơ sở trong ngoặc đơn cho định nghĩa của lớp dẫn xuất

>>> class Person:
                pass
>>> class Student[Person]:
                pass
>>> issubclass[Student,Person]

đầu ra

Thật

Ở đây, lớp Student kế thừa từ lớp Person. Ở đây, vì chúng tôi chỉ muốn tập trung vào cú pháp python, nên chúng tôi sử dụng câu lệnh 'pass' trong phần thân của các lớp

Ngoài ra, chúng tôi sử dụng chức năng issubclass[] để xác nhận rằng sinh viên là một lớp con của người

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

Có năm loại kế thừa trong python, chúng tôi quan sát

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

1. Kế thừa đơn trong Python

Một kế thừa Python duy nhất là khi một lớp kế thừa từ một lớp

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
>>> lime=citrus[]

đầu ra

Tôi là trái cây
Tôi là cam quýt

>>> x

đầu ra

3

2. Python đa kế thừa

Nhiều kế thừa Python là khi một lớp kế thừa từ nhiều lớp cơ sở

>>> class Color:
                pass
>>> class Fruit:
                pass
>>> class Orange[Color,Fruit]:
                pass
>>> issubclass[Orange,Color] and issubclass[Orange,Fruit]

đầu ra

Thật

3. Kế thừa đa cấp trong Python

Khi một lớp kế thừa từ lớp khác, lớp này lại kế thừa từ lớp khác, đó là sự kế thừa python đa cấp

>>> class A:
                x=1         
>>> class B[A]:
                pass
>>> class C[B]:
                pass
>>> cobj=C[]
>>> cobj.x

đầu ra

1

4. Kế thừa phân cấp trong Python

Khi có nhiều hơn một lớp kế thừa từ một lớp, đó là kế thừa Python phân cấp

________số 8

đầu ra

Thật

5. Kế thừa lai trong Python

Kế thừa Python lai là sự kết hợp của hai loại kế thừa bất kỳ

>>> class A:
                x=1       
>>> class B[A]:
                pass
>>> class C[A]:
                pass
>>> class D[B,C]:
                pass
>>> dobj=D[]
>>> dobj.x

đầu ra

1

Siêu hàm thừa kế Python – Super[]

Với tính kế thừa, hàm super[] trong python thực sự khá tiện dụng. Nó cho phép chúng ta gọi một phương thức từ lớp cha

Hãy xác định một lớp mới cho điều này

Total Working Hrs :  50
Total Working Hrs :  60
Total Working Hrs :  50
0

đầu ra

Khởi động động cơ
Tôi có hai bánh xe
Dừng động cơ

Phương pháp ghi đè Python

Một lớp con có thể thay đổi chức năng của một phương thức Python trong lớp cha. Nó làm như vậy bằng cách xác định lại nó

Điều này được gọi là ghi đè phương thức python. Hãy xem ví dụ ghi đè phương thức Python này

Total Working Hrs :  50
Total Working Hrs :  60
Total Working Hrs :  50
1

đầu ra

tôi ở B

Quá tải phương thức Python

Trước khi chúng tôi nói bất cứ điều gì, chúng tôi muốn bạn xem đoạn mã sau

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
0

đầu ra

Traceback [cuộc gọi gần đây nhất gần đây nhất].
Tệp “
add[2,3]
TypeError. add[] thiếu 1 đối số vị trí bắt buộc. ‘c’

Trông giống như nạp chồng phương thức, thực ra Python chỉ giữ lại định nghĩa mới nhất của phương thức mà bạn khai báo với nó

Mã này không thực hiện cuộc gọi đến phiên bản add[] có hai đối số để thêm. Vì vậy, chúng tôi thấy an toàn khi nói Python không hỗ trợ nạp chồng phương thức

Tuy nhiên, gần đây chúng tôi đã tìm ra một cách khá Pythonic để biến điều này thành hiện thực. Kiểm tra cái này

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
1

Trong mã này, chúng tôi không chỉ sử dụng biến ma thuật *args cho biến arity, chúng tôi còn để mã xử lý cả số nguyên và chuỗi

Xem nó xảy ra

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
2

đầu ra

12

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
3

đầu ra

'Tôi nói tiếng Python'

Bạn nói những gì nếu tôi làm điều này?

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
4

đầu ra

trả về a+b+c

>>> x=0
>>> class fruit:
                def __init__[self]:
                                global x
                                x+=1
                                print["I'm a fruit"]                          
>>> class citrus[fruit]:
                def __init__[self]:
                                super[].__init__[]
                                global x
                                x+=2
                                print["I'm citrus"]                           
>>> x
5

đầu ra

5

Do đó, chúng tôi sẽ nói rằng đây không phải là quá tải phương thức, điều này chỉ đơn giản được sử dụng cho các đối số mặc định

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

  1. Kế thừa hoạt động như thế nào trong Python?
  2. Các loại kế thừa trong Python là gì?
  3. Python có hỗ trợ đa kế thừa không?
  4. Kế thừa Python là gì?
  5. Có thể kế thừa phân cấp trong Python không?

Phần kết luận

Trong tất cả những điều tốt đẹp, tính kế thừa của Python giúp chúng ta tiết kiệm thời gian, công sức và bộ nhớ

Trong hướng dẫn này, chúng ta đã xem xét cú pháp kế thừa Python, các kiểu kế thừa, nạp chồng phương thức Python, ghi đè phương thức trong python và các siêu hàm của python

Quá tải và ghi đè trong Python là gì?

Quá tải phương thức là xác định hai hoặc nhiều phương thức có cùng tên nhưng khác tham số . Python không hỗ trợ nạp chồng phương thức. Ghi đè phương thức là định nghĩa lại một phương thức của lớp cha trong lớp dẫn xuất. Ghi đè yêu cầu kế thừa để thực hiện.

Nạp chồng hàm trong Python là gì?

Nạp chồng hàm trong Python là gì? . the process where the same function can be used multiple times by passing a different number of parameters as arguments.

Chức năng quá tải và ghi đè giải thích với một ví dụ là gì?

Sự khác biệt giữa Nạp chồng hàm và Ghi đè hàm trong C++

Sự khác biệt giữa quá tải và ghi đè là gì?

Ghi đè xảy ra khi chữ ký phương thức giống nhau trong lớp cha và lớp con. Quá tải xảy ra khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng khác tham số

Chủ Đề