Python ẩn dữ liệu

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

Ẩn dữ liệu là gì và ví dụ?

Ẩn dữ liệu là kỹ thuật lập trình hướng đối tượng [OOP] được sử dụng cụ thể để ẩn các chi tiết đối tượng bên trong [i. e. , thành viên dữ liệu] . Ẩn dữ liệu đảm bảo quyền truy cập dữ liệu độc quyền cho chỉ các thành viên của lớp và bảo vệ cũng như duy trì tính toàn vẹn của đối tượng bằng cách ngăn chặn các thay đổi và xâm nhập có chủ đích hoặc ngoài ý muốn.

Sự khác biệt giữa đóng gói và ẩn dữ liệu là gì?

Trong khi ẩn dữ liệu tập trung vào việc hạn chế sử dụng dữ liệu trong chương trình để đảm bảo an toàn dữ liệu, đóng gói dữ liệu tập trung vào gói [hoặc đóng gói] dữ liệu phức tạp để hiển thị chế độ xem đơn giản hơn cho người dùng. Trong ẩn dữ liệu, dữ liệu chỉ được xác định là riêng tư. Trong đóng gói dữ liệu, dữ liệu có thể là công khai hoặc riêng tư

Có sự khác biệt nào giữa ẩn dữ liệu và trừu tượng hóa trong Python không?

Sự định nghĩa. Ẩn dữ liệu là quá trình đảm bảo quyền truy cập dữ liệu độc quyền cho các thành viên lớp và cung cấp tính toàn vẹn của đối tượng bằng cách ngăn chặn các thay đổi ngoài ý muốn hoặc dự kiến. Mặt khác, trừu tượng là một khái niệm OOP ẩn các chi tiết triển khai và chỉ hiển thị chức năng cho người dùng

ẩn dữ liệu là gì đưa ra một ví dụ thực tế?

Ví dụ. Trong ví dụ này, có một lớp với một biến và hai hàm. Ở đây, biến "num" là riêng tư, vì vậy, nó chỉ có thể được truy cập bởi các thành viên của cùng một lớp và nó không thể được truy cập ở bất kỳ nơi nào khác. Do đó, nó không thể truy cập biến này bên ngoài lớp, được gọi là ẩn dữ liệu

Chủ Đề