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ì?
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ở
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
Đ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
Giả 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 dictionary0
đầ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