Các lớp và đối tượng trong Python - Lập trình hướng đối tượng



Blog về 'Lớp Python' này đề cập đến các nguyên tắc cơ bản của lớp, thuộc tính và các khái niệm OOPS khác nhau như kế thừa, đa hình và đóng gói.

Sau khi Stack Overflow dự đoán rằng vào năm 2019, Python sẽ vượt xa các ngôn ngữ khác về các nhà phát triển tích cực, nhu cầu về chỉ đang phát triển.Python tuân theo mô hình lập trình hướng đối tượng. Nó xử lý việc khai báo các lớp python, tạo các đối tượng từ chúng và tương tác với người dùng. Trong một ngôn ngữ hướng đối tượng, chương trình được chia thành các đối tượng độc lập hoặc bạn có thể nói thành một số chương trình nhỏ. Mỗi đối tượng đại diện cho một phần khác nhau của ứng dụng có thể giao tiếp với nhau.
Trong blog lớp python này, bạn sẽ hiểu từng khía cạnh của các lớp và đối tượng theo trình tự sau:

Bắt đầu nào.:-)





Lớp Python là gì?

Một lớp trong python là bản thiết kế mà từ đó các đối tượng cụ thể được tạo. Nó cho phép bạn cấu trúc phần mềm của mình theo một cách cụ thể. Đây là một câu hỏi làm thế nào? Các lớp cho phép chúng tôi nhóm dữ liệu và chức năng của mình một cách hợp lý theo cách dễ dàng sử dụng lại và một cách để xây dựng nếu cần. Hãy xem xét hình ảnh dưới đây.

ClassesAndObjects - Lớp Python - EdurekaTrong hình ảnh đầu tiên (A), nó đại diện cho bản thiết kế của một ngôi nhà có thể được coi là Lớp học . Với cùng một bản thiết kế, chúng ta có thể tạo ra một số ngôi nhà và chúng có thể được coi là Các đối tượng . Sử dụng một lớp, bạn có thể thêm tính nhất quán cho các chương trình của mình để chúng có thể được sử dụng theo những cách sạch sẽ và hiệu quả hơn. Các thuộc tính là các thành viên dữ liệu (biến lớp và biến phiên bản) và các phương thức được truy cập thông qua ký hiệu dấu chấm.



  • Biến lớp là một biến được chia sẻ bởi tất cả các đối tượng / cá thể khác nhau của một lớp.
  • Biến thể hiện là các biến duy nhất cho mỗi trường hợp. Nó được định nghĩa bên trong một phương thức và chỉ thuộc về phiên bản hiện tại của một lớp.
  • Phương pháp cũng được gọi là các hàm được định nghĩa trong một lớp và mô tả hành vi của một đối tượng.

Bây giờ, chúng ta hãy tiếp tục và xem nó hoạt động như thế nào trong PyCharm. Để bắt đầu, trước tiên hãy xem cú pháp của một lớp python.

Cú pháp :

phương thức javascript là gì
class Class_name: statement-1. . tuyên bố-N

Đây, “ lớp học' câu lệnh tạo ra một định nghĩa lớp mới. Tên của lớp ngay sau từ khóa “ lớp học' trong python được theo sau bởi dấu hai chấm. Để tạo một lớp trong python, hãy xem xét ví dụ dưới đây:



class nhân viên: chuyển #no thuộc tính và phương thức emp_1 = worker () emp_2 = worker () #instance biến có thể được tạo theo cách thủ công emp_1.first = 'aayushi' emp_1.last = 'Johari' emp_1.email='aayushi@edureka.co 'emp_1.pay = 10000 emp_2.first =' test 'emp_2.last =' abc 'emp_2.email='test@company.com' emp_2.pay = 10000 print (emp_1.email) print (emp_2.email)

Đầu ra -

aayushi@edureka.co test@company.com

Bây giờ, điều gì sẽ xảy ra nếu chúng ta không muốn đặt các biến này theo cách thủ công. Bạn sẽ thấy rất nhiều mã và nó cũng dễ bị lỗi. Vì vậy, để làm cho nó tự động, chúng ta có thể sử dụng phương pháp 'init'. Đối với điều đó, chúng ta hãy hiểu chính xác các phương thức và thuộc tính trong một lớp python.

Các phương thức và thuộc tính trong một lớp Python

Bây giờ việc tạo một lớp chưa hoàn tất nếu không có một số chức năng. Vì vậy, các chức năng có thể được xác định bằng cách đặt các thuộc tính khác nhau hoạt động như một vùng chứa dữ liệu và các chức năng liên quan đến các thuộc tính đó. Các hàm trong python còn được gọi là Phương pháp . Nói về trong đó phương pháp , nó là một hàm đặc biệt được gọi bất cứ khi nào một đối tượng mới của lớp đó được khởi tạo. Bạn có thể coi nó là phương thức khởi tạo hoặc bạn có thể coi đây là phương thức khởi tạo nếu bạn đến từ bất kỳ nền tảng lập trình hướng đối tượng nào khác như C ++, Java, v.v. Bây giờ khi chúng ta đặt một phương thức bên trong một lớp, chúng sẽ tự động nhận được phiên bản. Hãy tiếp tục với lớp python và chấp nhận tên, họ và lương bằng cách sử dụng phương pháp này.

nhân viên lớp: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' emp_1 = staff ('aayushi', 'johari', 350000) emp_2 = worker ('test', 'test', 100000) print (emp_1.email) print (emp_2.email)

Bây giờ trong phương thức “init” của chúng tôi, chúng tôi đã thiết lập các biến cá thể này (self, first, last, sal). Bản thân là ví dụ có nghĩa là bất cứ khi nào chúng ta viết self.fname = first, nó giống như emp_1.first = ’aayushi’. Sau đó, chúng tôi đã tạo các phiên bản của lớp nhân viên nơi chúng tôi có thể chuyển các giá trị được chỉ định trong phương thức init. Phương thức này nhận các trường hợp làm đối số. Thay vì làm thủ công, nó sẽ được thực hiện tự động hiện nay.

Tiếp theo, chúng tôi muốn khả năng thực hiện một số loại hành động. Đối với điều đó, chúng tôi sẽ thêm một phương pháp đến lớp này. Giả sử tôi muốn chức năng hiển thị tên đầy đủ của nhân viên. Vì vậy, chúng ta hãy thực hiện điều này một cách thiết thực.

nhân viên lớp: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) emp_1 = worker ('aayushi', 'johari', 350000) emp_2 = nhân viên ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Đầu ra-

aayushi.johari@company.com test.test@company.com aayushijohari testtest

Như bạn có thể thấy ở trên, tôi đã tạo một phương thức có tên là 'full name' trong một lớp. Vì vậy, mỗi phương thức bên trong một lớp python tự động lấy cá thể làm đối số đầu tiên. Bây giờ trong phương pháp này, tôi đã viết logic để in tên đầy đủ và trả về cái này thay vì tên và họ của emp_1. Tiếp theo, tôi đã sử dụng “self” để nó hoạt động với tất cả các phiên bản. Do đó, để in nó mọi lúc, chúng tôi sử dụng phương pháp .

Tiếp tục với các lớp Python, có các biến được chia sẻ giữa tất cả các phiên bản của một lớp. Chúng được gọi là biến lớp . Các biến phiên bản có thể là duy nhất cho mỗi phiên bản như tên, email, sal, v.v. Phức tạp? Hãy hiểu điều này bằng một ví dụ. Tham khảo mã bên dưới để biết mức tăng lương hàng năm.

nhân viên lớp: perc_raise = 1,05 def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) def apply_raise (self): self.sal = int (self.sal * 1,05 ) emp_1 = nhân viên ('aayushi', 'johari', 350000) emp_2 = nhân viên ('kiểm tra', 'kiểm tra', 100000) print (emp_1.sal) emp_1.apply_raise () print (emp_1.sal)

Đầu ra-

350000 367500

Như bạn thấy ở trên, tôi đã in tiền lương trước và sau đó áp dụng mức tăng 1,5%. Để truy cập các biến lớp này, chúng ta cần truy cập chúng thông qua lớp hoặc một thể hiện của lớp. Bây giờ, chúng ta hãy hiểu các thuộc tính khác nhau trong một lớp python.

Các thuộc tính trong một lớp Python

Các thuộc tính trong Python xác định một thuộc tính của một đối tượng, phần tử hoặc một tệp. Có hai loại thuộc tính:

  • Thuộc tính lớp tích hợp: Có nhiều thuộc tính dựng sẵn khác nhau hiện diện bên trong các lớp Python. Ví dụ: _dict_, _doc_, _name _, v.v. Hãy để tôi lấy cùng một ví dụ mà tôi muốn xem tất cả các cặp khóa-giá trị của worker1. Đối với điều đó, bạn chỉ cần viết câu lệnh dưới đây chứa vùng tên lớp:

    print (emp_1 .__ dict__)

    Sau khi thực thi nó, bạn sẽ nhận được các kết quả như: {‘fname’: ‘aayushi’, ‘lname’: ‘johari’, ‘sal’: 350000, ’email’: ‘aayushi.johari@company.com’}

  • Các thuộc tính do Người dùng xác định : Các thuộc tính được tạo bên trong định nghĩa lớp. Chúng ta có thể tạo động các thuộc tính mới cho các thể hiện hiện có của một lớp. Các thuộc tính cũng có thể được liên kết với tên lớp.

Tiếp theo, chúng tôi có công khai, được bảo vệriêng tư thuộc tính. Hãy hiểu chúng một cách chi tiết:

Đặt tên Kiểu Ý nghĩa
TênCông cộngCác thuộc tính này có thể được sử dụng tự do bên trong hoặc bên ngoài định nghĩa lớp
_TênĐược bảo vệCác thuộc tính được bảo vệ không được sử dụng bên ngoài định nghĩa lớp, trừ khi bên trong định nghĩa lớp con
__TênRiêng tưLoại thuộc tính này là không thể truy cập và vô hình. Không thể đọc hoặc ghi các thuộc tính đó, ngoại trừ bên trong chính định nghĩa lớp


Tiếp theo, hãy hiểu thành phần quan trọng nhất trong lớp python, tức là Đối tượng.

Đối tượng trong lớp Python là gì?

Như chúng ta đã thảo luận ở trên, một đối tượng có thể được sử dụng để truy cập các thuộc tính khác nhau. Nó được sử dụng để tạo một thể hiện của lớp. Một cá thể là một đối tượng của một lớp được tạo trong thời gian chạy.

To cung cấp cho bạn một cái nhìn tổng quan nhanh chóng, một đối tượng về cơ bản là mọi thứ bạn nhìn thấy xung quanh. Ví dụ: Con chó là đối tượng của lớp thú, tôi là đối tượng của lớp người. Tương tự, có thể có các đối tượng khác nhau cho cùng một lớp điện thoại.Điều này khá giống với một lệnh gọi hàm mà chúng ta đã thảo luận. Hãy hiểu điều này bằng một ví dụ:

class MyClass: def func (self): print ('Hello') # tạo MyClass mới ob = MyClass () ob.func ()

Tiếp tục với lớp python, chúng ta hãy hiểu các khái niệm OOP khác nhau.

Các khái niệm về OOP

OOP đề cập đến Lập trình hướng đối tượng trong Python. Vâng, Python không hoàn toàn hướng đối tượng vì nó chứa một số hàm thủ tục. Bây giờ, bạn phải tự hỏi sự khác biệt giữa lập trình thủ tục và hướng đối tượng là gì. Để xóa bỏ nghi ngờ của bạn, trong một chương trình thủ tục, toàn bộ mã được viết thành một thủ tục dài mặc dù nó có thể chứa các hàm và chương trình con. Nó không thể quản lý được vì cả dữ liệu và logic trộn lẫn với nhau. Nhưng khi chúng ta nói về lập trình hướng đối tượng, chương trình được chia thành các đối tượng tự chứa hoặc một số chương trình nhỏ. Mỗi đối tượng đại diện cho một phần khác nhau của ứng dụng có dữ liệu và logic riêng để giao tiếp giữa chúng. Ví dụ, một trang web có các đối tượng khác nhau như hình ảnh, video, v.v.
Lập trình hướng đối tượng bao gồm khái niệm lớp Python, đối tượng, Kế thừa, Đa hình, Trừu tượng, v.v. Hãy cùng tìm hiểu chi tiết các chủ đề này.

sắp xếp int mảng c ++

Lớp Python: Kế thừa

Kế thừa cho phép chúng ta kế thừa các thuộc tính và phương thức từ lớp cơ sở / cha. Điều này rất hữu ích vì chúng ta có thể tạo các lớp con và nhận tất cả các chức năng từ lớp mẹ của chúng ta. Sau đó, chúng ta có thể ghi đè và thêm các chức năng mới mà không ảnh hưởng đến lớp cha. Hãy cùng tìm hiểu khái niệm về lớp cha và lớp con bằng một ví dụ.

Như chúng ta có thể thấy trong hình, một đứa trẻ được thừa hưởng các thuộc tính từ cha. Tương tự, trong python, có hai lớp:

1. Lớp cha (Super hoặc Base)

2. Lớp con (Lớp con hoặc Lớp bắt nguồn)

Một lớp kế thừa các thuộc tính được gọi là Đứa trẻ Lớp trong khi một lớp có thuộc tính được kế thừa được gọi là Cha mẹ lớp học.

Thừa kế đề cập đến khả năng tạo ra Các lớp phụ có chứa chuyên môn của cha mẹ họ. Nó được chia thành bốn loại cụ thể là đơn, đa cấp, phân cấp và nhiều kế thừa. Tham khảo hình ảnh bên dưới để hiểu rõ hơn.

java đợi và thông báo ví dụ

Hãy tiếp tục với lớp python và hiểu cách kế thừa hữu ích.

Giả sử, tôi muốn tạo các lớp học cho các loại nhân viên. Tôi sẽ tạo 'nhà phát triển' và 'người quản lý' dưới dạng các lớp phụ vì cả nhà phát triển và người quản lý sẽ có tên, email và tiền lương và tất cả các chức năng này sẽ có trong lớp nhân viên. Vì vậy, thay vì sao chép mã cho các lớp con, chúng ta có thể đơn giản sử dụng lại mã bằng cách kế thừa từ nhân viên.

nhân viên lớp: num_employee = 0 raise_amount = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + last + '@ company.com' worker.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) nhà phát triển lớp (nhân viên): pass emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.email)
 Đầu ra - aayushi.johari@company.com

Như bạn có thể thấy trong đầu ra ở trên, tất cả các chi tiết của lớp nhân viên đều có sẵn trong lớp nhà phát triển.Bây giờ nếu tôi muốn thay đổi raise_amount cho nhà phát triển thành 10% thì sao? hãy xem cách nó có thể được thực hiện trên thực tế.

nhân viên lớp: num_employee = 0 raise_amount = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + last + '@ company.com' worker.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) nhà phát triển lớp (nhân viên): raise_amount = 1.10 emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Đầu ra - 1,1

Như bạn có thể thấy, nó đã cập nhật tỷ lệ phần trăm tăng lương từ 4% lên 10%.Bây giờ, nếu tôi muốn thêm một thuộc tính nữa, hãy nói một ngôn ngữ lập trình trong phương thức init của chúng tôi, nhưng nó không tồn tại trong lớp cha của chúng tôi. Có giải pháp nào cho điều đó không? Đúng! chúng ta có thể sao chép toàn bộ logic của nhân viên và làm điều đó nhưng nó sẽ lại làm tăng kích thước mã. Vì vậy, để tránh điều đó, hãy xem xét đoạn mã dưới đây:

nhân viên lớp: num_employee = 0 raise_amount = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + last + '@ company.com' worker.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) nhà phát triển lớp (nhân viên): raise_amount = 1.10 def __init __ (self, first, last, sal, prog_lang): super () .__ init __ (first, last, sal) self.prog_lang = prog_lang emp_1 = developer ( 'aayushi', 'johari', 1000000, 'python') print (emp_1.prog_lang)

Do đó, chỉ với một chút mã, tôi đã thực hiện thay đổi. Tôi đã sử dụng super .__ init __ (first, last, pay) kế thừa các thuộc tính từ lớp cơ sở.Để kết luận, kế thừa được sử dụng để sử dụng lại mã và giảm độ phức tạp của một chương trình.

Lớp Python: Đa hình

Tính đa hình trong Khoa học máy tính là khả năng trình bày cùng một giao diện cho các dạng cơ bản khác nhau. Về mặt thực tế, tính đa hình có nghĩa là nếu lớp B kế thừa từ lớp A, thì nó không phải kế thừa mọi thứ về lớp A, nó có thể thực hiện một số điều mà lớp A làm khác. Nó thường được sử dụng nhất trong khi xử lý kế thừa. Python hoàn toàn là đa hình, nó có khả năng nạp chồng các toán tử tiêu chuẩn để chúng có hành vi phù hợp dựa trên ngữ cảnh của chúng.

Hãy để chúng tôi hiểu bằng một ví dụ:

class Animal: def __init __ (self, name): self.name = name def talk (self): pass class Dog (Animal): def talk (self): print ('Woof') class Cat (Animal): def talk ( self): print ('MEOW!') c = Cat ('kitty') c.talk () d = Dog (Animal) d.talk ()

Đầu ra -

Meo! Gâu

Tiếp theo, chúng ta hãy chuyển sang một khái niệm lập trình hướng đối tượng khác, tức là Trừu tượng hóa.

Lớp Python: Trừu tượng

Tính trừu tượng được sử dụng để đơn giản hóa thực tế phức tạp bằng cách mô hình hóa các lớp phù hợp với vấn đề. Ở đây, chúng ta có một lớp trừu tượng không thể được khởi tạo. Điều này có nghĩa là bạn không thể tạo các đối tượng hoặc cá thể cho các lớp này. Nó chỉ có thể được sử dụng để kế thừa các chức năng nhất định mà bạn gọi là lớp cơ sở. Vì vậy, bạn có thể kế thừa các chức năng nhưng đồng thời, bạn không thể tạo một thể hiện của lớp cụ thể này. Hãy cùng hiểu khái niệm về lớp trừu tượng với một ví dụ dưới đây:

from abc import ABC, abstractmethod class Employee (ABC): @abstractmethod def Calcul_salary (self, sal): vượt qua lớp Nhà phát triển (Nhân viên): def Calcul_salary (self, sal): finalalary = sal * 1.10 return finalalary emp_1 = Developer () print (emp_1.calculate_salary (10000))

Đầu ra-

11000.0

Như bạn có thể thấy trong đầu ra ở trên, chúng tôi đã tăng mức lương cơ bản lên 10% tức là mức lương hiện tại là 11000. Bây giờ, nếu bạn thực sự tiếp tục và tạo một đối tượng của lớp “Nhân viên”, nó sẽ ném cho bạn một lỗi là python không 'không cho phép bạn tạo một đối tượng của lớp trừu tượng. Nhưng bằng cách sử dụng kế thừa, bạn thực sự có thể kế thừa các thuộc tính và thực hiện các tác vụ tương ứng.

Tóm lại, đây là tất cả về các lớp và đối tượng python. Chúng tôi đã trình bày tất cả các khái niệm cơ bản về lớp Python, các đối tượng và các khái niệm hướng đối tượng khác nhau trong python, vì vậy bạn có thể bắt đầu thực hành ngay bây giờ. Tôi hy vọng các bạn thích đọc blog này về “Lớp học Python” và hiểu rõ về từng khía cạnh mà tôi đã thảo luận ở trên. Sau lớp học python, tôi sẽ tạo ra nhiều blog hơn về Python cho thư viện và mảng học scikit. Giữ nguyên!

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Lớp học Python” này và chúng tôi sẽ liên hệ lại với bạn sớm nhất có thể.

Để có đượ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ể với chương trình đào tạo trực tuyến trực tiếp của chúng tôi với hỗ trợ 24/7 và quyền truy cập trọn đời.