Python có phải là ngôn ngữ đối tượng không?

Python xứng đáng có tiếng là một ngôn ngữ dễ đọc và dễ viết. Nó có tài liệu tuyệt vời và một cộng đồng rất chào đón những người mới bắt đầu

Khi tìm hiểu sâu hơn, chúng ta có thể tìm thấy nhiều khía cạnh của ngôn ngữ Python khiến chúng ta ngạc nhiên, vì một khía cạnh cần được giải thích sâu hơn là về Làm thế nào mọi thứ trong Python là một đối tượng? . Trước khi thảo luận về cách mọi thứ trong Python là đối tượng, hãy thảo luận về Đối tượng là gì?

Đối tượng là gì?

Vì chúng ta đã biết rằng Python là một ngôn ngữ lập trình hướng đối tượng và mọi thứ trong Python đều là một đối tượng, nên điểm thảo luận chính ở đây trước hết là đối tượng là gì? . Các thuộc tính này chỉ đơn giản là các biến tham chiếu dữ liệu. Các thủ tục hoặc chuỗi các hoạt động được thực hiện theo một trình tự hoặc cách thức nhất định mà một đối tượng thực hiện được gọi là các phương thức. Các phương thức của một đối tượng là các hàm thực hiện các thao tác trên các thuộc tính dữ liệu của đối tượng

Có thể có nhiều thể hiện của một đối tượng trong một chương trình. Các ngôn ngữ lập trình khác nhau định nghĩa “đối tượng” theo những cách khác nhau. Trong một số trường hợp, điều đó có nghĩa là tất cả các đối tượng phải có các thuộc tính và phương thức trong khi ở một số trường hợp khác, điều đó có nghĩa đơn giản là tất cả các đối tượng đều có thể được phân lớp. Trong ngôn ngữ lập trình Python, định nghĩa của nó lỏng lẻo hơn vì một số đối tượng không có thuộc tính cũng như phương thức và cũng không phải tất cả các đối tượng đều có thể phân lớp được


Nhưng câu nói “Mọi thứ trong Python là một đối tượng” có nghĩa là nó có thể được gán cho một biến hoặc được truyền dưới dạng đối số cho một hàm. Vì vậy, các đối tượng là các khối xây dựng của một chương trình hướng đối tượng, vì chương trình sử dụng công nghệ hướng đối tượng về cơ bản là một tập hợp các đối tượng. Do đó các chương trình viết bằng python cũng là một tập hợp các đối tượng này ở dạng biến. Vì vậy, điều quan trọng là phải sửa lại rằng mọi thứ trong các đối tượng Python có nghĩa là các chuỗi là đối tượng, Danh sách là đối tượng, Hàm là đối tượng và Ngay cả các mô-đun cũng là đối tượng

Mọi thứ trong Python đều là đối tượng

In Python, pretty much everything is an object, whether it is a number, a function or even modules. Python is using a pure object model where classes are instances of a meta-class “type” in Python, the terms “type” and “class” are synonyms. And “type” is the only class which is an instance of itself. This object model can be useful when we want information about a particular resource in Python. Except for the Python keywords like “if def, globals”, using type[] or dir[] or just type the resource name and press enter- will work on pretty much anything. Let’s make it clear what this statement means that “Everything in Python is an object”.

Hãy xem xét những điều sau đây

Như chúng ta đã biết rất rõ rằng Python có các kiểu; . Trước đó trong các ngôn ngữ lập trình hướng đối tượng như Python, một đối tượng là một thực thể chứa dữ liệu cùng với siêu dữ liệu và/hoặc chức năng được liên kết. Trong Python, mọi thứ đều là một đối tượng, có nghĩa là mọi thực thể đều có một số siêu dữ liệu được gọi là “thuộc tính” và chức năng liên quan được gọi là “phương thức”. Các thuộc tính và phương thức này được truy cập thông qua cú pháp dấu chấm

Ví dụ: trước đây chúng ta đã thấy rằng các danh sách có một phương thức chắp thêm, phương thức này sẽ thêm một mục vào danh sách và được truy cập thông qua dấu chấm [“. ”] cú pháp

Mặc dù có thể mong đợi các đối tượng phức hợp như danh sách có các thuộc tính và phương thức, nhưng điều đôi khi bất ngờ là trong Python, ngay cả các kiểu đơn giản cũng có các thuộc tính và phương thức kèm theo.

Ví dụ: các loại số có thuộc tính thực và hình ảnh trả về phần thực và phần ảo của giá trị, nếu được xem dưới dạng số phức

Các phương thức giống như các thuộc tính, ngoại trừ chúng là các hàm mà bạn có thể gọi bằng cách sử dụng dấu ngoặc đơn mở và đóng. Ví dụ: số dấu phẩy động có phương thức gọi là is_integer kiểm tra xem giá trị có phải là số nguyên hay không

Khi chúng tôi nói rằng mọi thứ trong Python đều là đối tượng, chúng tôi thực sự muốn nói rằng mọi thứ đều là đối tượng – ngay cả các thuộc tính và phương thức của đối tượng cũng là đối tượng với thông tin loại riêng của chúng

Thực hiện thông qua ngôn ngữ lập trình C. -

Bây giờ chúng ta hãy đi sâu vào triển khai C để xem các đối tượng được biểu diễn như thế nào

Các đối tượng đó được thao tác dưới dạng cấu trúc C có tên là PyObject. Trớ trêu thay, mô hình đối tượng CPython được triển khai bằng C, một ngôn ngữ không hướng đối tượng. Từ đó ta sẽ để ý 2 thuộc tính sau

  • Đầu tiên là số lượng tham chiếu, theo dõi xem có bao nhiêu đối tượng và biến khác tham chiếu đến nó. Điều này được thay đổi trong mã C thông qua các macro Py_INCREF[] và Py_DECREF[]
  • Thứ hai, một loại [cấu trúc PyTypeObject], cho phép Python xác định loại hoặc lớp của đối tượng khi chạy. Loại đó chứa các phương thức khác nhau được sử dụng để mô tả hành vi của lớp. Hàm nào cần gọi để phân bổ loại, để phân bổ lại loại, để truyền dưới dạng số, v.v.

Lớp tích hợp và Lớp người dùng

Python đi kèm với một số lớp dựng sẵn, chẳng hạn như int, str, list, nhưng cũng có chức năng hoặc lớp. Trái với một ngôn ngữ như Ruby, nơi mọi thứ cũng là một đối tượng, Python không cho phép thêm các thuộc tính hoặc phương thức mới vào các kiểu dựng sẵn như int hoặc str

Các khai báo của các đối tượng này nằm trong thư mục Bao gồm và chúng ta có thể tìm thấy trong Đối tượng các triển khai khác nhau của một số loại

int [Đối tượng/longobject. c], str [Đối tượng/đối tượng unicode. c], danh sách [Đối tượng/listobject. c], các lớp do người dùng định nghĩa [Đối tượng/đối tượng lớp. c], chức năng [Đối tượng/funcobject. c], v.v.

Mỗi tệp trong số đó xác định một phiên bản PyTypeObject đại diện cho loại. Mỗi phiên bản PyTypeObject chứa hầu hết các hàm mô tả hành vi của loại

Ví dụ: tp_getattro và tp_setattro, khi được xác định, là các hàm cho phép đọc và gán giá trị cho một thuộc tính tương ứng. Việc không có tp_setattro cho kiểu “int” giải thích tại sao không thể thêm hoặc thay đổi thuộc tính thành số nguyên. tp_as_sequence và tp_as_mapping trỏ đến danh sách các phương thức để xử lý các hàm tiêu chuẩn cho các hàm và từ điển tương ứng

Khi chương trình định nghĩa một lớp người dùng, bộ thực thi sẽ tạo một kiểu mới cho lớp đó

Sự kết luận

Sau khi thảo luận rất nhiều về cách mọi thứ trong python là một đối tượng? . Vì vậy, một đối tượng là một sự trừu tượng cho phép chúng ta lập trình mà không cần phải theo dõi mọi thứ theo cách thủ công

Đối tượng có hai mục đích, thứ nhất nó chứa dữ liệu, và nó có chức năng thực hiện một số công việc, chức năng này có thể sử dụng hoặc không và/hoặc thay đổi dữ liệu của đối tượng. Vì vậy, chúng ta sẽ hiểu rõ rằng “Mọi thứ trong Python đều là đối tượng” chỉ là một cụm từ có ý nghĩa khi chúng ta chuyển việc học ngôn ngữ lập trình từ ngôn ngữ C sang ngôn ngữ lập trình Python và nếu ai đó là người mới bắt đầu và bắt đầu học từ chính python thì nó

Ta có thể hiểu bằng cách lấy ví dụ về Numbers vì một số trong C được gọi là nguyên hàm. Nhưng trong Python, một số là một đối tượng vì nó có thể được thao tác theo nhiều cách khác nhau vì số đó có thể là 'Số nguyên tố' hoặc 'Số chẵn' và chúng tôi cung cấp cho chúng một số chức năng và thuộc tính cụ thể

Là đối tượng Python hay chức năng?

Python là một ngôn ngữ hướng đối tượng . Bạn có thể lập trình chức năng trong đó. Tuy nhiên, nó được thiết kế để ưu tiên lập trình dựa trên đối tượng.

Python thuộc loại ngôn ngữ nào?

Python là ngôn ngữ lập trình hướng đối tượng, tương tác, thông dịch . Nó kết hợp các mô-đun, ngoại lệ, gõ động, kiểu dữ liệu động mức rất cao và các lớp. Nó hỗ trợ nhiều mô hình lập trình ngoài lập trình hướng đối tượng, chẳng hạn như lập trình thủ tục và chức năng.

Tại sao Python không phải là đối tượng

Python hỗ trợ tất cả khái niệm "lập trình hướng đối tượng" nhưng nó KHÔNG hoàn toàn hướng đối tượng vì - Mã trong Python cũng có thể được viết mà không cần tạo lớp.

Chủ Đề