Trong bài viết này, chúng ta sẽ thảo luận về nạp chồng phương thức và ghi đè phương thức. Cả hai khái niệm là loại đa hình. Đa hình là một khái niệm từ lập trình hướng đối tượng [OOP] mà cùng một phương thức hoạt động cho thấy các đặc điểm khác nhau
Quá tải phương thức
Nói một cách đơn giản, nạp chồng có nghĩa là chúng ta có cùng tên phương thức nhưng các đối số khác nhau hoặc số lượng đối số hoặc loại đối số khác nhau. Nhưng khái niệm nạp chồng phương thức không có trong python, đó là chúng ta không thể tạo hai phương thức có cùng tên trong cùng một lớp
Chúng tôi sẽ giúp bạn hiểu cách nạp chồng phương thức trong python
class student:
def sum[self,a, b]:
s = a+b
return s
s1 = student[]
print[s1.sum[2,3]]#output:
5
Phương thức lớp đơn giản này có một phương thức gọi là tổng chấp nhận hai tham số 'a' và 'b' sau khi truyền các giá trị, chúng tôi nhận được kết quả '5'. Nhưng nếu chúng ta vượt qua ba giá trị thì nó sẽ báo lỗi
class student:
def sum[self,a, b]:
s = a+b
return s
s1 = student[]
print[s1.sum[2,3,4]]#output:
TypeError: sum[] takes 2 positional arguments but 4 were given
Mặt khác, chúng tôi đã chuyển hai giá trị cho ba đối số, nó báo lỗi
class student:
def sum[self, a,b,c]:
s = a+b+c
return s
s1 = student[]
print[s1.sum[2,3]]#output:
TypeError: sum[] missing 1 required positional argument: 'c'
Vì vậy, vì điều này, chúng tôi tạo một phương thức bổ sung để chấp nhận ba giá trị trong các ngôn ngữ khác nhưng trong python, chúng tôi có thể thực hiện theo cách khác như trong ví dụ bên dưới
Chúng ta có thể sử dụng 'Không' làm giá trị mặc định của các đối số hoặc chúng ta cũng có thể sử dụng các đối số có độ dài thay đổi
class student:
def sum[self,a=None, b=None, c=None]:
s = 0
if a!=None and b!=None and c!=None:
s = a+b+c
elif a!=None and b!=None:
s = a+b
else:
s = a
return ss1 = student[]
print[s1.sum[4,2,5]]#output:
11
Phương thức lớp này sẽ hoạt động ngay cả khi chúng ta không chuyển bất kỳ giá trị nào cho các đối số
Khái niệm OOP trong Python
OOPs là một cách viết chương trình hiệu quả cao
quán rượu. hướng về ai. mạng lưới
7 mẹo dành cho người mới bắt đầu giúp bạn học Python tốt hơn
Stey-by-step chủ đề để trở thành một con trăn chuyên nghiệp
quán rượu. hướng về ai. mạng lưới
Ghi đè phương thức
Trong ghi đè phương thức, chúng ta có cùng tên phương thức với cùng số lượng đối số nhưng không cùng lớp để khái niệm kế thừa xuất hiện trong bức tranh
Khái niệm ghi đè phương thức rất quan trọng trong ngành công nghiệp phần mềm
class apple:
def fruit[self]:
print["You are eating Apple"]class orange:
pass
f = orange[]
f.fruit[]#output:
AttributeError: 'orange' object has no attribute 'fruit'
Trong ví dụ trên, chúng ta có thể quan sát thấy lớp màu cam không có phương thức fruit nên nó báo lỗi
Điều gì sẽ xảy ra nếu chúng ta có thể sử dụng khái niệm thừa kế như lớp cha và lớp con để kế thừa tất cả các thuộc tính của lớp cha?. Trong ví dụ này, chúng ta sẽ đặt quả táo làm lớp cha và màu cam làm lớp con
class apple:
def fruit[self]:
print["You are eating Apple"]class orange[apple]:
pass
f = orange[]
f.fruit[]#output:
You are eating Apple
Ở ví dụ trên, đối tượng tìm kiếm câu trong phương thức của lớp cam trước, nó không tìm thấy nhưng phương thức màu cam kế thừa tất cả các thuộc tính của lớp apple sau đó đối tượng tìm đến lớp apple để kiểm tra phương thức fruit
Chúng ta có thể tạo phương thức trái cây tương tự trong lớp màu cam như trong ví dụ bên dưới
class apple:
def fruit[self]:
print["You are eating Apple"]class orange:
def fruit[self]:
print["You are eating Orange"]
f = orange[]
f.fruit[]#output:
You are eating Orange
Lần này, đối tượng tìm thấy phương thức trái cây trong lớp màu cam
Sự kết luận
Hai khái niệm này rất hữu ích trong phát triển phần mềm để giảm bớt các chức năng làm việc trong phần mềm