Có bao nhiêu nguyên tắc OOP trong Python?

Lập trình hướng đối tượng như một môn học đã thu hút được sự theo dõi phổ biến của các nhà phát triển. Python, ngôn ngữ lập trình đang được ưa chuộng cũng tuân theo mô hình lập trình hướng đối tượng. Nó liên quan đến việc khai báo các lớp và đối tượng Python đặt nền tảng cho các khái niệm OOP. Bài viết này về “lập trình hướng đối tượng python” sẽ hướng dẫn bạn cách khai báo các lớp python, khởi tạo các đối tượng từ chúng cùng với bốn phương pháp của OOP.  

Trong bài viết này, các khía cạnh sau đây sẽ được đề cập chi tiết

Bắt đầu nào

Lập trình hướng đối tượng là gì?

Có bao nhiêu nguyên tắc OOP trong Python?

Lập trình hướng đối tượng là một cách lập trình máy tính sử dụng ý tưởng “” để biểu diễn dữ liệu và phương thức. Đây cũng là một cách tiếp cận được sử dụng để tạo mã gọn gàng và có thể tái sử dụng thay vì mã dư thừa. chương trình được chia thành các đối tượng độc lập hoặc một số chương trình nhỏ. Mỗi đối tượng Cá nhân đại diện cho một phần khác nhau của ứng dụng có logic và dữ liệu riêng để giao tiếp trong chính chúng

Bây giờ, để có một bức tranh rõ ràng hơn về lý do tại sao chúng ta sử dụng oops thay vì pop, tôi đã liệt kê những điểm khác biệt bên dưới

Sự khác biệt giữa lập trình hướng đối tượng và hướng thủ tục

Lập trình hướng đối tượng (OOP)

Lập trình hướng thủ tục (Pop)

Đó là cách tiếp cận từ dưới lên

Đó là cách tiếp cận từ trên xuống

Chương trình được chia thành các đối tượng

Chương trình được chia thành các chức năng

Sử dụng công cụ sửa đổi quyền truy cập

'công khai', riêng tư', được bảo vệ'

Không sử dụng công cụ sửa đổi quyền truy cập

Nó an toàn hơn

Nó kém an toàn hơn

Đối tượng có thể di chuyển tự do trong các chức năng thành viên

Dữ liệu có thể di chuyển tự do từ chức năng này sang chức năng khác trong các chương trình

Nó hỗ trợ kế thừa

Nó không hỗ trợ kế thừa

Đó là tất cả về sự khác biệt, tiếp tục, hãy tìm ý tưởng về Python OOPs Conceots

Các khái niệm OOP của Python là gì?

Các khái niệm OOP (lập trình hướng đối tượng) chính trong Python bao gồm Lớp, Đối tượng, Phương thức, Kế thừa, Đa hình, Trừu tượng hóa dữ liệu và Đóng gói

Đó là tất cả về sự khác biệt, hãy tiếp tục tìm hiểu về các lớp và đối tượng

Lớp học và đối tượng là gì?

Lớp là một tập hợp các đối tượng hoặc bạn có thể nói đó là một bản thiết kế của các đối tượng xác định các thuộc tính và hành vi chung. Bây giờ câu hỏi đặt ra, làm thế nào để bạn làm điều đó?

Chà, nó nhóm dữ liệu một cách hợp lý theo cách mà khả năng sử dụng lại mã trở nên dễ dàng. Tôi có thể cho bạn một ví dụ thực tế - hãy nghĩ về một văn phòng có 'nhân viên' là một lớp và tất cả các thuộc tính liên quan đến nó như 'emp_name', 'emp_age', 'emp_salary', 'emp_id' là các đối tượng trong Python. Hãy để chúng tôi xem từ góc độ mã hóa rằng làm thế nào để bạn khởi tạo một lớp và một đối tượng

Lớp được xác định theo từ khóa “Lớp”
Thí dụ

class class1(): // class 1 is the name of the class

Ghi chú. Python không phân biệt chữ hoa chữ thường

Các đối tượng

Các đối tượng là một thể hiện của một lớp. Nó là một thực thể có trạng thái và hành vi. Tóm lại, nó là một thể hiện của một lớp có thể truy cập dữ liệu

cú pháp. obj = class1()

Ở đây obj là “đối tượng” của class1

Tạo đối tượng và lớp trong python

Thí dụ

class employee():
    def __init__(self,name,age,id,salary):   //creating a function
        self.name = name // self is an instance of a class
        self.age = age
        self.salary = salary
        self.id = id

emp1 = employee("harshit",22,1000,1234) //creating objects
emp2 = employee("arjun",23,2000,2234)
print(emp1.__dict__)//Prints dictionary

Giải trình. 'emp1′ và 'emp2′ là các đối tượng được khởi tạo dựa trên lớp 'nhân viên'. Ở đây, từ (__dict__) là một "từ điển" in ra tất cả các giá trị của đối tượng 'emp1' dựa trên tham số đã cho (tên, tuổi, lương). (__init__) hoạt động như một hàm tạo được gọi bất cứ khi nào một đối tượng được tạo

Tôi hy vọng bây giờ các bạn sẽ không gặp phải bất kỳ vấn đề nào khi xử lý 'lớp' và 'đối tượng' trong tương lai

Với phần này, hãy để tôi giới thiệu cho bạn các phương pháp lập trình hướng đối tượng

Phương pháp lập trình hướng đối tượng

Các phương pháp lập trình hướng đối tượng giải quyết các khái niệm sau

  • Di sản
  • đa hình
  • đóng gói
  • trừu tượng

Hãy để chúng tôi hiểu khái niệm thừa kế đầu tiên một cách chi tiết

Di sản

Đã từng nghe người thân nói về đoạn hội thoại này “con giống hệt bố/mẹ của con”, lý do đằng sau điều này được gọi là ‘’. Từ khía cạnh Lập trình, Nó thường có nghĩa là “kế thừa hoặc chuyển các đặc điểm từ lớp cha sang lớp con mà không có bất kỳ sửa đổi nào”. Lớp mới được gọi là lớp dẫn xuất/lớp con và lớp mà nó được dẫn xuất từ ​​đó được gọi là lớp cha/cơ sở

TypesOfInheritance - Python class - Edureka

Hãy để chúng tôi hiểu chi tiết từng chủ đề phụ

Thừa kế đơn

Kế thừa một mức cho phép một lớp dẫn xuất kế thừa các đặc điểm từ một lớp cha duy nhất

Thí dụ

class employee1()://This is a parent class
def __init__(self, name, age, salary):  
self.name = name
self.age = age
self.salary = salary

class childemployee(employee1)://This is a child class
def __init__(self, name, age, salary,id):
self.name = name
self.age = age
self.salary = salary
self.id = id
emp1 = employee1('harshit',22,1000)

print(emp1.age)

đầu ra. 22

Giải trình

  • Tôi đang sử dụng lớp cha và tạo một hàm tạo (__init__), bản thân lớp đang khởi tạo các thuộc tính với các tham số (‘tên’, ‘tuổi’ và ‘tiền lương’)

  • Tạo một lớp con 'childemployee' kế thừa các thuộc tính từ lớp cha và cuối cùng khởi tạo các đối tượng 'emp1′ và 'emp2′ dựa trên các tham số

  • Cuối cùng, tôi đã in tuổi của emp1. Chà, bạn có thể làm rất nhiều thứ như in toàn bộ từ điển hoặc tên hoặc mức lương

Kế thừa đa cấp

Kế thừa đa cấp cho phép một lớp dẫn xuất kế thừa các thuộc tính từ một lớp cha ngay lập tức, từ đó kế thừa các thuộc tính từ lớp cha của nó

Thí dụ

class employee()://Super class
def __init__(self,name,age,salary):  
self.name = name
self.age = age
self.salary = salary
class childemployee1(employee)://First child class
def __init__(self,name,age,salary):
self.name = name
self.age = age
self.salary = salary

class childemployee2(childemployee1)://Second child class
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
emp1 = employee('harshit',22,1000)
emp2 = childemployee1('arjun',23,2000)

print(emp1.age)
print(emp2.age)

đầu ra. 22,23

Giải trình

  • Nó được giải thích rõ ràng trong đoạn mã được viết ở trên, Ở đây tôi đã định nghĩa lớp cha là employee và lớp con là childemployee1. Bây giờ, childemployee1 đóng vai trò là cha của childemployee2

  • Tôi đã khởi tạo hai đối tượng 'emp1′ và 'emp2′ trong đó tôi đang chuyển các tham số “tên”, “tuổi”, “lương” cho emp1 từ siêu lớp  “nhân viên” và “tên”, “tuổi, “lương” và “id

Kế thừa phân cấp

Kế thừa mức phân cấp cho phép nhiều hơn một lớp dẫn xuất kế thừa các thuộc tính từ lớp cha

Thí dụ

class employee():
def __init__(self, name, age, salary):     //Hierarchical Inheritance
self.name = name
self.age = age
self.salary = salary

class childemployee1(employee):
def __init__(self,name,age,salary):
self.name = name
self.age = age
self.salary = salary

class childemployee2(employee):
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
emp1 = employee('harshit',22,1000)
emp2 = employee('arjun',23,2000)

print(emp1.age)
print(emp2.age)

đầu ra. 22,23

Giải trình

  • Trong ví dụ trên, bạn có thể thấy rõ ràng có 2 lớp con “childemployee1” và “childemployee2”. Chúng đang kế thừa các chức năng từ một lớp cha chung là “employee”

  • Các đối tượng 'emp1′ và 'emp2′ được khởi tạo dựa trên các tham số 'tên', 'tuổi', 'tiền lương'

Đa thừa kế

Kế thừa nhiều mức cho phép một lớp dẫn xuất kế thừa các thuộc tính từ nhiều lớp cơ sở

Thí dụ

class employee1()://Parent class
    def __init__(self, name, age, salary):  
        self.name = name
        self.age = age
        self.salary = salary

class employee2()://Parent class
    def __init__(self,name,age,salary,id):
     self.name = name
     self.age = age
     self.salary = salary
     self.id = id

class childemployee(employee1,employee2):
    def __init__(self, name, age, salary,id):
     self.name = name
     self.age = age
     self.salary = salary
     self.id = id
emp1 = employee1('harshit',22,1000)
emp2 = employee2('arjun',23,2000,1234)

print(emp1.age)
print(emp2.id)

đầu ra. 22,1234

Giải trình. Trong ví dụ trên, tôi lấy 2 lớp cha là “employee1” và “employee2”. Và một lớp con “childemployee”, đang kế thừa cả hai lớp cha bằng cách khởi tạo các đối tượng ’emp1′ và ’emp2′ dựa trên các tham số của các lớp cha

Đây là tất cả về tính kế thừa, tiếp tục trong Lập trình hướng đối tượng Python, chúng ta hãy tìm hiểu sâu về ''

đa hình

Chắc hẳn tất cả các bạn đều đã sử dụng GPS để điều hướng tuyến đường. Thật ngạc nhiên khi bạn đi qua nhiều tuyến đường khác nhau cho cùng một điểm đến tùy thuộc vào giao thông, theo quan điểm lập trình, điều này được gọi là 'đa hình'. Đây là một trong những phương pháp OOP như vậy, trong đó một tác vụ có thể được thực hiện theo nhiều cách khác nhau. Nói một cách đơn giản, nó là một thuộc tính của một đối tượng cho phép nó có nhiều dạng

Polymorphism Example - Object oriented programming python - Edureka

Đa hình có hai loại

  • Đa hình thời gian biên dịch
  • Đa hình thời gian chạy

Đa hình thời gian biên dịch

Đa hình thời gian biên dịch còn được gọi là đa hình tĩnh được giải quyết trong thời gian biên dịch chương trình. Một ví dụ phổ biến là "quá tải phương thức". Để tôi chỉ cho bạn một ví dụ nhanh về điều tương tự

Thí dụ

class employee1():
def name(self):
print("Harshit is his name")    
def salary(self):
print("3000 is his salary")

def age(self):
print("22 is his age")

class employee2():
def name(self):
print("Rahul is his name")

def salary(self):
print("4000 is his salary")

def age(self):
print("23 is his age")

def func(obj)://Method Overloading
obj.name()
obj.salary()
obj.age()

obj_emp1 = employee1()
obj_emp2 = employee2()

func(obj_emp1)
func(obj_emp2)

đầu ra

Khắc nghiệt là tên của anh ấy
3000 là tiền lương của anh ấy
22 là tuổi của anh ấy
Rahul là tên của anh ấy
4000 là tiền lương của anh ấy
23 là tuổi của anh ấy

Giải trình

  • Trong Chương trình trên, tôi đã tạo hai lớp 'employee1′ và 'employee2′ và tạo các hàm cho cả 'tên', 'tiền lương' và 'tuổi' và in giá trị của cùng một giá trị mà không lấy giá trị đó từ người dùng

  • Bây giờ, chào mừng bạn đến với phần chính nơi tôi đã tạo một hàm với tham số là 'obj' và gọi cả ba hàm i. e. 'tên', 'tuổi' và 'lương'

  • Sau đó, các đối tượng emp_1 và emp_2 được khởi tạo dựa trên hai lớp và được gọi đơn giản là hàm. Kiểu như vậy được gọi là nạp chồng phương thức, cho phép một lớp có nhiều phương thức dưới cùng một tên

Đa hình thời gian chạy

Đa hình thời gian chạy cũng được gọi là đa hình động trong đó nó được giải quyết trong thời gian chạy. Một ví dụ phổ biến về tính đa hình trong thời gian chạy là "ghi đè phương thức". Hãy để tôi chỉ cho bạn thông qua một ví dụ để hiểu rõ hơn

Thí dụ

class employee():
   def __init__(self,name,age,id,salary):  
       self.name = name
       self.age = age
       self.salary = salary
       self.id = id
def earn(self):
        pass

class childemployee1(employee):

   def earn(self)://Run-time polymorphism
      print("no money")

class childemployee2(employee):

   def earn(self):
       print("has money")

c = childemployee1
c.earn(employee)
d = childemployee2
d.earn(employee)

đầu ra. không có tiền, có tiền

Giải trình. Trong ví dụ trên, tôi đã tạo hai lớp 'childemployee1' và 'childemployee2' được dẫn xuất từ ​​cùng một lớp cơ sở 'employee'. Đây là cái bẫy mà một người không nhận được tiền trong khi người kia nhận được. Bây giờ câu hỏi thực sự là làm thế nào điều này xảy ra? . Bây giờ, trong hai lớp dẫn xuất, tôi đã sử dụng cùng một hàm trống và sử dụng câu lệnh in là 'không có tiền' và 'có tiền'. Cuối cùng, tạo hai đối tượng và gọi hàm

Chuyển sang phương pháp Lập trình hướng đối tượng Python tiếp theo, tôi sẽ nói về đóng gói

đóng gói

Ở dạng thô, đóng gói về cơ bản có nghĩa là liên kết dữ liệu trong một lớp duy nhất. Python không có bất kỳ từ khóa riêng nào, không giống như Java. Một lớp không nên được truy cập trực tiếp mà phải có tiền tố trong dấu gạch dưới

Hãy để tôi chỉ cho bạn một ví dụ để hiểu rõ hơn

Thí dụ

________số 8_______

đầu ra

1234
Traceback (cuộc gọi gần đây nhất cuối cùng)
1234
Tập tin “C. /Users/Harshit_Kant/PycharmProjects/test1/venv/encapsu. py”, dòng 10, trong
in (đối tượng1. __lương)
Lỗi thuộc tính. đối tượng 'nhân viên' không có thuộc tính '__salary'

Giải trình. Bạn sẽ nhận được câu hỏi này dấu gạch dưới và lỗi là gì?

Vì vậy, tôi đã sử dụng phương thức setter cung cấp quyền truy cập gián tiếp vào chúng trong ví dụ tiếp theo của tôi

Thí dụ

class employee():
def __init__(self):
self.__maxearn = 1000000
def earn(self):
print("earning is:{}".format(self.__maxearn))

def setmaxearn(self,earn)://setter method used for accesing private class
self.__maxearn = earn

emp1 = employee()
emp1.earn()

emp1.__maxearn = 10000
emp1.earn()

emp1.setmaxearn(10000)
emp1.earn()

đầu ra

thu nhập là. 1000000, thu nhập là. 1000000, thu nhập là. 10000

Giải trình. Việc sử dụng phương thức setter cung cấp quyền truy cập gián tiếp vào phương thức lớp riêng. Ở đây tôi đã định nghĩa một lớp employee và sử dụng (__maxearn) là phương thức setter được sử dụng ở đây để lưu trữ thu nhập tối đa của nhân viên và một hàm setter setmaxearn() lấy giá làm tham số

Đây là một ví dụ rõ ràng về đóng gói trong đó chúng tôi đang hạn chế quyền truy cập vào phương thức lớp riêng và sau đó sử dụng phương thức setter để cấp quyền truy cập

Tiếp theo trong phương pháp lập trình hướng đối tượng python nói về một trong những khái niệm chính được gọi là

trừu tượng

bookmyshow - Object Oriented programming Python - EdurekaGiả sử bạn đã đặt vé xem phim từ bookmyshow bằng ngân hàng ròng hoặc bất kỳ quy trình nào khác. Bạn không biết quy trình tạo mã pin hoặc cách xác minh được thực hiện. Điều này được gọi là 'trừu tượng hóa' từ khía cạnh lập trình, về cơ bản, điều đó có nghĩa là bạn chỉ hiển thị chi tiết triển khai của một quy trình cụ thể và ẩn chi tiết khỏi người dùng. Nó được sử dụng để đơn giản hóa các vấn đề phức tạp bằng cách mô hình hóa các lớp phù hợp với vấn đề

Một lớp trừu tượng không thể được khởi tạo, điều đó đơn giản có nghĩa là bạn không thể tạo các đối tượng cho loại này. Nó chỉ có thể được sử dụng để kế thừa các chức năng

Thí dụ

class employee():
    def __init__(self,name,age,id,salary):   //creating a function
        self.name = name // self is an instance of a class
        self.age = age
        self.salary = salary
        self.id = id

emp1 = employee("harshit",22,1000,1234) //creating objects
emp2 = employee("arjun",23,2000,2234)
print(emp1.__dict__)//Prints dictionary
0

đầu ra. emp_id là 12345

Giải trình. Như bạn có thể thấy trong ví dụ trên, chúng ta đã nhập một phương thức trừu tượng và phần còn lại của chương trình có lớp cha và lớp dẫn xuất. Một đối tượng được khởi tạo cho lớp cơ sở 'childemployee' và chức năng trừu tượng đang được sử dụng

Python có hướng đối tượng 100 phần trăm không?

Python không có các chỉ định truy cập như “riêng tư” như trong java. Nó hỗ trợ hầu hết các thuật ngữ liên quan đến ngôn ngữ lập trình hướng đối tượng ngoại trừ khả năng đóng gói mạnh mẽ. Do đó nó không hoàn toàn hướng đối tượng

Điều này đưa chúng ta đến phần cuối của bài viết về “Python lập trình hướng đối tượng”. Tôi hy vọng bạn đã hiểu rõ tất cả các khái niệm liên quan đến lớp Python, đối tượng và khái niệm hướng đối tượng trong python. Hãy chắc chắn rằng bạn thực hành càng nhiều càng tốt và hoàn nguyên kinh nghiệm của bạn

Có một câu hỏi cho chúng tôi? . Để có kiến ​​thức chuyên sâu về Python cùng với các ứng dụng khác nhau của nó, bạn có thể đăng ký ngay khóa đào tạo Python trực tiếp của chúng tôi với sự hỗ trợ 24/7 và quyền truy cập trọn đời

Khám phá toàn bộ khả năng của bạn để trở thành một chuyên gia AI và ML thông qua Khóa học Trí tuệ nhân tạo của chúng tôi. Tìm hiểu về các công nghệ khác nhau liên quan đến AI như Học máy, Học sâu, Thị giác máy tính, Xử lý ngôn ngữ tự nhiên, Nhận dạng giọng nói và Học tăng cường

Các nguyên tắc của OOP trong Python là gì?

Bốn trụ cột của OOPS trong Python là gì? .
đóng gói
Di sản
đa hình
trừu tượng

4 loại OOP trong Python là gì?

Giống như các ngôn ngữ Hướng đối tượng khác, khi tạo các đối tượng sử dụng các lớp, có bốn (4) nguyên tắc cơ bản để viết mã rõ ràng và ngắn gọn. Những nguyên tắc này được gọi là bốn trụ cột của lập trình hướng đối tượng (OOP). Bốn trụ cột này là Kế thừa, Đa hình, Đóng gói và Trừu tượng hóa .

Có OOP trong Python không?

Python là ngôn ngữ lập trình tuyệt vời hỗ trợ OOP . Bạn sẽ sử dụng nó để định nghĩa một lớp với các thuộc tính và phương thức, sau đó bạn sẽ gọi. Python cung cấp một số lợi ích so với các ngôn ngữ lập trình khác như Java, C++ hoặc R.

4 nguyên tắc OOP là gì?

Trừu tượng hóa, đóng gói, đa hình và kế thừa là bốn nguyên tắc lý thuyết chính của lập trình hướng đối tượng.