Mọi thứ trong Python có phải là một đối tượng không?
Gần đây, tôi bắt đầu học Python. Xuất thân từ ngôn ngữ lập trình C, ban đầu Python cảm thấy siêu dễ. Không còn nửa cột, lỗi phân đoạn, malloc'ing và giải phóng bộ nhớ và… không còn con trỏ nữa. Sau đó, chúng ta bắt đầu tìm hiểu về đối tượng, lớp, thuộc tính thể hiện… và đó là lúc mọi thứ bắt đầu phức tạp hơn. Trong bài đăng này, tôi muốn chia sẻ những gì tôi đã học được cho đến nay với hy vọng nó sẽ giúp ích cho tất cả các sinh viên Python hiện tại và tương lai— vì vậy, hãy bắt đầu nào Show
Python được phát triển bởi Guido van Rossum vào cuối những năm 1980 và được phát hành lần đầu tiên vào năm 1991. Nó được đặt tên theo chương trình “Monty Python” của đài BBC, không phải theo con vật một cách đáng ngạc nhiên. 🐍 Python là một trong những ngôn ngữ lập trình được sử dụng nhiều nhất hiện nay. Nó nổi tiếng vì dễ sử dụng, dễ đọc và nhỏ gọn (các tập lệnh Python thường ngắn hơn nhiều so với C). Nó cũng có thể mở rộng và có thể được sử dụng cho nhiều ứng dụng khác nhau, từ phát triển web và phần mềm đến toán học và tập lệnh hệ thống, có thể kể đến một số ứng dụng. Phiên bản Python mới nhất là Python 3, đây là phiên bản tôi sẽ sử dụng cho blog này Ngôn ngữ lập trình hướng đối tượng là gì?Lập trình hướng đối tượng (OOP) là một mô hình lập trình máy tính trong đó thiết kế phần mềm được tổ chức xung quanh dữ liệu hoặc đối tượng, thay vì chức năng và logic Trong OOP có 4 khối xây dựng
Hôm nay chúng ta sẽ tập trung vào các đối tượng Các đối tượng trong PythonTrong Python, mọi thứ được coi là một đối tượng. Một đối tượng trong Python có thể được định nghĩa là một trường dữ liệu có các thuộc tính và hành vi duy nhất. Nếu một lớp là một ý tưởng, thì một đối tượng là sự thực thi của nó Có ba thuộc tính mà mọi đối tượng đều có
Id và loại không thể thay đổi khi đối tượng được tạo. Các giá trị có thể được thay đổi nhưng chỉ dành cho các đối tượng có thể thay đổi Các đối tượng có thể thay đổi và không thể thay đổiCác đối tượng trong Python có thể thay đổi hoặc không thay đổi Từ điển Merriam-Webster định nghĩa hai tính từ này như sau
Trong ngữ cảnh của Python, có thể thay đổi là khả năng của các đối tượng thay đổi giá trị của chúng. Giá trị của một đối tượng có thể thay đổi có thể được thay đổi theo thời gian. Trong khi đó, giá trị của một đối tượng bất biến, không thể thay đổi theo thời gian. Sau khi được tạo, giá trị của các đối tượng này là vĩnh viễn Loại có thể thay đổi phổ biến (hầu hết mọi thứ khác)
Loại bất biến phổ biến
Ghi chú. bộ dữ liệu và bộ cố định là những trường hợp đặc biệt vì chúng là bất biến nhưng chúng có thể chứa các đối tượng có thể thay đổi - sẽ nói thêm về điều đó sau Loại() của bạn là gì?Để kiểm tra xem biến thuộc loại nào, bạn có thể sử dụng hàm có sẵn >>> a = 14 Hàm dựng sẵn >>> a = 14 trả về loại đối số (đối tượng) được truyền dưới dạng tham số >>> a = 1 Lưu ý rằng có một hàm tích hợp khác cũng kiểm tra loại đối tượng_______8_______6, hàm này nhận hai đối số, đối tượng bạn muốn kiểm tra và loại mà bạn muốn kiểm tra. Nó trả về một giá trị boolean tương ứng. Một điểm khác biệt nữa là >>> a = 16 kiểm tra thêm các lớp con, trong khi >>> a = 14 thì không. Nhưng làm cách nào để kiểm tra xem một biến có thể thay đổi hay không thay đổi? . Hãy xem cách chúng hoạt động Cùng một đối tượng hay không?
Cách tìm danh tính đối tượng. Tôi()Id của đối tượng là duy nhất và không đổi đối với đối tượng đó trong suốt thời gian tồn tại của nó. Hai đối tượng có thời gian sống không chồng chéo có thể có cùng id. Id của đối tượng sẽ khác nhau mỗi khi bạn chạy chương trình. Ngoài một vài trường hợp ngoại lệ, chúng tôi sẽ đề cập sau trong blog Để kiểm tra id của một đối tượng, chúng ta có thể sử dụng hàm có sẵn >>> a = 12 của Python, hàm này chấp nhận một tham số duy nhất và trả về một số nguyên đại diện cho danh tính của đối tượng >>> a = 1 Bạn có thể thấy trong ví dụ trên >>> a = 13 và >>> a = 14 có các giá trị khác nhau của >>> a = 15 là hay không - đó là câu hỏiToán tử >>> a = 10sẽ so sánh nếu hai tên tham chiếu đến cùng một đối tượng và trả về true nếu chúng là ( >>> a = 11sẽ làm ngược lại. ) Trong trường hợp các đối tượng không thể thay đổi, chẳng hạn như số nguyên và chuỗi, Python tối ưu hóa tài nguyên bằng cách tạo hai tên tham chiếu đến cùng một giá trị chuỗi tham chiếu đến cùng một đối tượng ________số 8_______Quan trọng — toán tử >>> a = 10 không giống với toán tử so sánh >>> a = 19 Toán tử >>> a = 19 sẽ chỉ kiểm tra xem các đối tượng có cùng giá trị hay không, không phải nếu chúng là cùng một đối tượng. Nếu chúng có cùng giá trị, nó sẽ trả về True, nếu không thì False >>> a = 1 Bạn có thể thấy từ ví dụ bên dưới rằng khi toán tử >>> a = 19 trả về >>> list_a = [4, 5, 6] 2 thì số id cũng sẽ giống như vậy. Ngược lại khi nó trả về >>> list_a = [4, 5, 6] 3Danh sách, tuy nhiên, hoạt động khác nhau. list_a và list_b có cùng giá trị nhưng không tham chiếu đến cùng một đối tượng >>> list_a = [4, 5, 6] bí danhKhi chúng ta gán một tên khác cho cùng một biến, đó được gọi là bí danh. Những thay đổi được thực hiện cho một bí danh sẽ ảnh hưởng đến bí danh khác >>> a = [7, 8, 9] Ghi chú. Bí danh có thể hữu ích khi làm việc với các đối tượng không thay đổi, tuy nhiên, tốt nhất nên tránh khi xử lý các đối tượng có thể thay đổi vì nó có thể hoạt động theo những cách không mong muốn hoặc ngoài ý muốn Ngoại lệ trong tính bất biếnMọi quy tắc đều có ngoại lệ. Trong sự chăm sóc này, họ là
Chúng có một id duy nhất không đổi, do đó chúng sẽ luôn trỏ đến cùng một đối tượng đã tồn tại trong bộ nhớ. Để biết thêm thông tin, hãy xem bài viết này. Toán tử “is” hoạt động không mong muốn với các số nguyên
>>> a = "Python is cool!" Đây là sản phẩm của cách thực tập chuỗi hoạt động trong Python. Thực tập chuỗi là cơ chế chỉ lưu trữ một bản sao của một giá trị chuỗi trong bộ nhớ để tiết kiệm không gian bộ nhớ và thời gian khi so sánh các chuỗi có giá trị giống nhau. Tóm lại, nếu chuỗi dài “rất” thì Python nghĩ sẽ không tiết kiệm thời gian để so sánh nên nó sẽ tạo một bản sao khác. Để tìm hiểu thêm về thực tập chuỗi, hãy xem
Các bộ dữ liệu thuộc loại bất biến, nhưng chứa các đối tượng có thể thay đổi. Danh sách và các đối tượng có thể thay đổi khác bên trong bộ dữ liệu có thể thay đổi, nhưng id của chúng sẽ luôn giống nhau. Vì vậy, các bộ dữ liệu ngay cả khi chúng có cùng giá trị sẽ trỏ đến các đối tượng khác nhau. Ngoại trừ các bộ dữ liệu trống sẽ đề cập đến cùng một đối tượng. Đây là bằng chứng trong mã👇🏾 >>> a = (1, 2) Để tìm hiểu thêm về cách các bộ dữ liệu hoạt động, đây là bài đăng trên blog tuyệt vời của Luciano Ramalho Sự khác biệt với = và += Toán tửChỉ định và tham chiếuHãy xem ví dụ mã >>> list_a = [0, 2, 4] Bạn có thấy điều gì vừa xảy ra không? Để hiểu tại sao điều này xảy ra, chúng ta cần hiểu sự khác biệt giữa hai toán tử Toán tử >>> list_a = [4, 5, 6] 5 gọi phương thức ma thuật >>> list_a = [4, 5, 6] 8 không sửa đổi một trong hai đối số. Vì vậy, >>> list_a = [4, 5, 6] 9tạo một đối tượng mới với giá trị [0, 2, 4, 6], mà >>> list_a = [4, 5, 6] 4 ở phía bên trái hiện đề cập đến. *Trong khi đó, toán tử >>> list_a = [4, 5, 6] 6 (tương đương với >>> a = [7, 8, 9] 2 gọi >>> a = [7, 8, 9] 3 để sửa đổi các đối số tại chỗ*Ghi chú. Như trong nhiều ngôn ngữ lập trình, trong câu lệnh gán, tên ở vế trái được liên kết với giá trị ở vế phải. Phía bên tay phải được đánh giá đầu tiên. Điều đó sau đó tạo một đối tượng mới hoặc truy xuất một đối tượng hiện có. Chỉ sau khi đối tượng được tạo hoặc truy xuất, tên mới được gán cho nó. Trong Python, chúng tôi nói rằng tên đề cập đến giá trị hoặc tên là tham chiếu đến giá trị Còn một điều cuối cùng tôi muốn đề cập trước khi kết thúc blog này và đó là… Truyền các đối tượng có thể thay đổi và không thể thay đổiBạn có thể thắc mắc làm thế nào các đối số được truyền cho các hàm và điều đó có nghĩa là gì đối với các đối tượng có thể thay đổi và không thể thay đổi? Đối tượng bất biến Hãy xem xét ví dụ dưới đây def increment(n): Trong trường hợp này, chúng ta có một var______37_______4 Hàm increment(n) có biến cục bộ n được tham chiếu đến cùng một đối tượng. Tuy nhiên, vì số nguyên là bất biến nên chúng ta không thể thay đổi giá trị của đối tượng thành 2 tại chỗ. chúng ta sẽ phải tạo đối tượng mới với giá trị 2. Đây là lý do tại sao giá trị của >>> a = [7, 8, 9] 5 không thay đổi sau khi gọi >>> a = [7, 8, 9] 6Tuy nhiên, chúng ta có thể sửa đổi giá trị của một đối tượng bất biến bằng cách thêm giá trị trả về vào hàm >>> a = 1 0Đối tượng có thể thay đổi Tuy nhiên, các đối tượng có thể thay đổi, chẳng hạn như danh sách, có thể được sửa đổi tại chỗ — đó là điều mà phương thức >>> a = [7, 8, 9] 7 thực hiện trong ví dụ bên dưới >>> a = 1 1Không có đối tượng mới nào được tạo và thay đổi xảy ra ở vị trí của đối tượng — vì vậy khi in >>> list_a = [4, 5, 6] 4, chúng tôi nhận được danh sách đã sửa đổiVà đó là một bọc Nguồn. Giphy của Flat-icons. comTôi hy vọng bạn đã tìm thấy bài viết này hữu ích. Đối với bất kỳ câu hỏi, nhận xét hoặc nếu bạn muốn nói xin chào, hãy kết nối với tôi trên LinkedIn hoặc theo dõi tôi tại đây trên Phương tiện Có phải tất cả mọi thứ là một đối tượng?- [Giảng viên] Trong lập trình hướng đối tượng, mọi thứ đều là đối tượng . Trên thực tế, chúng tôi đã làm việc với các đối tượng suốt thời gian qua. Có thể bạn chưa nhận ra. Hãy lấy một số nguyên đơn giản, int giá trị của tôi bằng năm.
Có phải tất cả các loại đối tượng trong Python?Mọi thứ trong Python đều là đối tượng bao gồm các lớp . Tất cả các lớp là thể hiện của một lớp gọi là "loại". Đối tượng kiểu cũng là một thể hiện của lớp kiểu. Bạn có thể kiểm tra hệ thống phân cấp thừa kế của lớp bằng cách kiểm tra thuộc tính __bases__ của một đối tượng lớp.
Mọi thứ trong Python có phải là một chuỗi không?Vì Python là ngôn ngữ lập trình hướng đối tượng nên mọi thứ trong Python đều là đối tượng, mọi số nguyên, chuỗi, danh sách và hàm .
Python có phải là một đối tượng không?Python là ngôn ngữ lập trình hướng đối tượng. Hầu hết mọi thứ trong Python đều là đối tượng , với các thuộc tính và phương thức của nó. Lớp giống như một hàm tạo đối tượng hoặc "bản thiết kế" để tạo đối tượng. |