Khái niệm OOP trong Python. Các lớp và đối tượng trong Python, Kế thừa, Nạp chồng, Ghi đè và Ẩn dữ liệu
Trong hướng dẫn trước, chúng ta một số thao tác Nhập/xuất mà Python cung cấp
Chúng tôi đã biết cách sử dụng các chức năng này để đọc dữ liệu từ người dùng hoặc từ các nguồn bên ngoài và cả cách ghi những dữ liệu đó vào các nguồn bên ngoài. Ngoài ra, chúng tôi đã học cách chia mã lớn thành các phương thức nhỏ hơn bằng cách sử dụng các hàm và cách gọi hoặc truy cập chúng
Đọc thêm => Nhiều hướng dẫn đào tạo Python miễn phí rõ ràng
Trong hướng dẫn này, chúng ta sẽ thảo luận về khái niệm Python nâng cao được gọi là OOP và các loại khái niệm oops khác nhau có sẵn trong Python cũng như cách thức và vị trí sử dụng chúng
Bạn sẽ học được gì
Xem VIDEO hướng dẫn
Video #1. Lớp, đối tượng và hàm tạo trong Python
Video #2. Khái niệm Kế thừa trong Python
Video #3. Quá tải, ghi đè và ẩn dữ liệu trong Python
Lớp học và đối tượng
- Python là ngôn ngữ lập trình hướng đối tượng, nơi lập trình nhấn mạnh nhiều hơn vào các đối tượng
- Hầu hết mọi thứ trong Python đều là đối tượng
Các lớp học
Lớp trong Python là một tập hợp các đối tượng, chúng ta có thể coi lớp như một bản thiết kế hoặc bản phác thảo hoặc nguyên mẫu. Nó chứa tất cả các chi tiết của một đối tượng
Trong ví dụ thực tế, Animal là một lớp, bởi vì chúng ta có nhiều loại Động vật khác nhau trên thế giới và tất cả chúng đều thuộc về một lớp gọi là Động vật
Định nghĩa một lớp
Trong Python, chúng ta nên định nghĩa một lớp bằng từ khóa 'class'
cú pháp
class classname: #Collection of statements or functions or classes
Ví dụ
class MyClass: a = 10 b = 20 def add[]: sum = a+b print[sum]
Trong ví dụ trên, chúng tôi đã khai báo lớp có tên là 'Myclass' và chúng tôi đã khai báo và định nghĩa một số biến và hàm tương ứng
Để truy cập các hàm hoặc biến có trong lớp, chúng ta có thể sử dụng tên lớp bằng cách tạo một đối tượng của nó
Trước tiên, hãy xem cách truy cập những thứ đó bằng cách sử dụng tên lớp
Ví dụ
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print[MyClass.a]
đầu ra
10
đầu ra
Các đối tượng
Một đối tượng thường là một thể hiện của một lớp. Nó được sử dụng để truy cập mọi thứ có trong lớp
Tạo một đối tượng
cú pháp
variablename = classname
Ví dụ
ob = MyClass[]
Thao tác này sẽ tạo một đối tượng thể hiện mới có tên là 'ob'. Sử dụng tên đối tượng này, chúng ta có thể truy cập tất cả các thuộc tính có trong lớp MyClass
Ví dụ
class MyClass: a = 10 b = 20 def add[self]: sum = self.a + self.b print[sum] #Creating an object of class MyClass ob = MyClass[] #Accessing function and variables present inside MyClass using the object print[ob.a] print[ob.b] ob.add[]
đầu ra
10
20
30
đầu ra
Hàm tạo trong Python
Constructor trong Python là một phương thức đặc biệt được sử dụng để khởi tạo các thành viên của một lớp trong thời gian chạy khi một đối tượng được tạo
Trong Python, chúng tôi có một số phương thức lớp tích hợp đặc biệt bắt đầu bằng dấu gạch dưới kép [__] và chúng có ý nghĩa đặc biệt trong Python
Tên của hàm tạo sẽ luôn là __init__[]
Mỗi lớp phải có một hàm tạo, ngay cả khi bạn không tạo một hàm tạo một cách rõ ràng, nó sẽ tự tạo một hàm tạo mặc định
Ví dụ
class MyClass: sum = 0 def __init__ [self, a, b]: self.sum = a+b def printSum[self]: print[“Sum of a and b is: ”, self.sum] #Creating an object of class MyClass ob = MyClass[12, 15] ob.printSum[]
đầu ra
Tổng của a và b là. 27
đầu ra
Nếu chúng ta quan sát trong ví dụ trên, thì chúng ta không gọi phương thức __init__[], bởi vì nó sẽ được gọi tự động khi chúng ta tạo một đối tượng cho lớp đó và khởi tạo các thành viên dữ liệu nếu có
Luôn nhớ rằng một hàm tạo sẽ không bao giờ trả về bất kỳ giá trị nào, do đó nó không chứa bất kỳ câu lệnh trả về nào
Di sản
Kế thừa là một trong những khái niệm mạnh mẽ nhất của OOP
Một lớp kế thừa các thuộc tính của một lớp khác được gọi là Kế thừa
Lớp kế thừa các thuộc tính được gọi là lớp con/lớp con và lớp mà các thuộc tính được kế thừa từ đó được gọi là lớp cha/lớp cơ sở
Python cung cấp ba loại Kế thừa
- Thừa kế đơn
- Kế thừa đa cấp
- Đa thừa kế
Nên đọc =>> Kế thừa trong Java
#1] Thừa kế đơn
Trong kế thừa đơn, một lớp sẽ chỉ kế thừa các thuộc tính của một lớp
Ví dụ
class Operations: a = 10 b = 20 def add[self]: sum = self.a + self.b print[“Sum of a and b is: “, sum] class MyClass[Operations]: c = 50 d = 10 def sub[self]: sub = self.c – self.d print[“Subtraction of c and d is: ”, sub] ob = MyClass[] ob.add[] ob.sub[]
đầu ra
Tổng của a và b là. 30
Phép trừ của c và d là. 40
đầu ra
Trong ví dụ trên, chúng ta đang kế thừa các thuộc tính của lớp ‘Operations’ vào lớp ‘MyClass’
Do đó, chúng ta có thể truy cập tất cả các phương thức hoặc câu lệnh có trong lớp 'Hoạt động' bằng cách sử dụng các đối tượng MyClass
#2] Kế thừa đa cấp
Trong Kế thừa đa cấp, một hoặc nhiều lớp đóng vai trò là lớp cơ sở
Điều đó có nghĩa là lớp thứ hai sẽ kế thừa các thuộc tính của lớp thứ nhất và lớp thứ ba sẽ kế thừa các thuộc tính của lớp thứ hai. Vì vậy, lớp thứ hai sẽ đóng vai trò là cả lớp Cha mẹ cũng như lớp Con
Ví dụ
________số 8đầu ra
Tổng của a và b là. 30
Phép trừ của a và b là. 10
Phép nhân của a và b là. 200
đầu ra
Trong ví dụ trên, lớp 'Phép trừ' kế thừa các thuộc tính của lớp 'Phép cộng' và lớp 'Phép nhân' sẽ kế thừa các thuộc tính của lớp 'Phép trừ'. Vì vậy, lớp 'Phép trừ' sẽ đóng vai trò là cả Lớp cơ sở và Lớp dẫn xuất
#3] Đa thừa kế
Lớp kế thừa các thuộc tính của nhiều lớp được gọi là Đa kế thừa
Đọc thêm =>> Java có hỗ trợ Đa kế thừa không?
Ví dụ
class Addition: a = 10 b = 20 def add[self]: sum = self. a+ self.b print[“Sum of a and b is: “, sum] class Subtraction[]: c = 50 d = 10 def sub[self]: sub = self.c-self.d print[“Subtraction of c and d is: ”, sub] class Multiplication[Addition,Subtraction]: def mul[self]: multi = self.a * self.c print[“Multiplication of a and c is: ”, multi] ob = Multiplication [] ob.add[] ob.sub[] ob.mul[]
đầu ra
Tổng của a và b là. 30
Phép trừ của c và d là. 10
Phép nhân của a và c là. 500
đầu ra
Quá tải phương thức trong Python
Nhiều phương thức có cùng tên nhưng với một loại tham số khác nhau hoặc một số lượng tham số khác nhau được gọi là Nạp chồng phương thức
Ví dụ
class MyClass: a = 10 b = 20 def add[]: sum = a+b print[sum]0
đầu ra
30
đầu ra
đầu ra
Nạp chồng phương thức không được hỗ trợ trong Python, bởi vì nếu chúng ta thấy trong ví dụ trên, chúng ta đã định nghĩa hai hàm có cùng tên 'product' nhưng có số lượng tham số khác nhau
Nhưng trong Python, định nghĩa mới nhất sẽ được cập nhật, do đó hàm product[a,b] sẽ trở nên vô dụng
Ghi đè phương thức trong Python
Nếu một phương thức của lớp con có cùng tên được khai báo trong phương thức của lớp cha thì nó được gọi là Ghi đè phương thức
Để ghi đè phương thức, chúng ta phải sử dụng tính kế thừa
Ví dụ
class MyClass: a = 10 b = 20 def add[]: sum = a+b print[sum]1
đầu ra
tôi ở B
đầu ra
Ẩn dữ liệu trong Python
Ẩn dữ liệu có nghĩa là đặt dữ liệu ở chế độ riêng tư để các thành viên khác trong lớp không thể truy cập được. Nó chỉ có thể được truy cập trong lớp nơi nó được khai báo
Trong python nếu muốn ẩn biến ta cần viết 2 dấu gạch dưới [__] trước tên biến
Ví dụ
class MyClass: a = 10 b = 20 def add[]: sum = a+b print[sum]2
đầu ra
30
Truy nguyên [lần gọi gần đây nhất].
Tệp “Ẩn dữ liệu. py”, dòng 10, in
print [ob. __num]
AttributeError. Phiên bản MyClass
không có thuộc tính ‘__num
đầu ra
Phần kết luận
Lớp là một kế hoạch chi tiết hoặc khuôn mẫu chứa tất cả các chi tiết của một đối tượng, trong đó đối tượng là một thể hiện của một lớp