Nếu chúng ta đã từng làm việc với các ngôn ngữ mô hình OOPS, chúng ta hẳn đã nghe thấy từ "thuộc tính" khá thường xuyên. Có hai loại thuộc tính-lớp thuộc tính và thuộc tính thể hiện. Hướng dẫn này giải thích thuộc tính là gì và loại của chúng, cùng với các ví dụ
Vì Python là một công cụ hỗ trợ rất lớn cho mô hình OOPS, nên mọi thứ đều được coi là một đối tượng. Chúng tôi tạo các lớp và đối tượng. Trước khi hiểu thuộc tính, hiểu lớp và đối tượng là nền tảng. Nói một cách đơn giản, một lớp giống như một bản thiết kế và để sử dụng bản thiết kế đó, chúng ta tạo các đối tượng cho lớp đó
Ví dụ
đầu ra
Delhi public school School: Delhi public school Place: Delhi grade: 5 Delhi public school School: Delhi public school Place: Delhi grade: 5
hiểu biết
Trong ví dụ trên, chúng tôi đã tạo một lớp gọi là "sinh viên" với ba biến và một hàm in các giá trị của ba biến. Mọi đối tượng chúng ta tạo cho lớp đều có quyền truy cập vào các biến trong lớp. Các biến này được gọi là "Thuộc tính" và các hàm được gọi là phương thức [còn được gọi là hàm]. Trong chương trình trên, chúng ta đã tạo hai đối tượng của lớp, s1 và s2, đồng thời truy cập thuộc tính sch_name và phương thức display[] in giá trị của các thuộc tính
Các loại thuộc tính
Thuộc tính lớp
- Trong ví dụ trước, chúng ta đã khai báo các thuộc tính không thay đổi, nghĩa là đối với bất kỳ đối tượng nào chúng ta tạo cho lớp, giá trị của các thuộc tính vẫn giữ nguyên
- Các thuộc tính như vậy được gọi là "Thuộc tính lớp"
Ví dụ
đầu ra
Student1: Ryan Harvard Cambridge Massachusetts Boston United States Student2: Tony Harvard Cambridge Massachusetts Boston United States
- Quan sát rằng thông tin trong lớp đang lưu trữ các giá trị giống nhau đại diện cho địa chỉ của trường đại học và chúng tôi đã sử dụng cùng một thông tin cho tất cả các đối tượng-sinh viên
Thuộc tính sơ thẩm
- Điều gì sẽ xảy ra nếu chúng ta muốn tạo một lớp cho phép mọi đối tượng có các thuộc tính của nó? . Ví dụ: mọi đối tượng nên chứa thông tin về một học sinh cá nhân
- Các thuộc tính lớp như vậy có thể cho phép các đối tượng giữ các giá trị khác nhau cho cùng một thuộc tính được gọi là "thuộc tính thể hiện"
- Chúng ta cần sử dụng phương thức __init__ và biến self để khai báo các thuộc tính này
- phương thức __init__. Nó là một hàm tạo cho phép các đối tượng có các giá trị khác nhau cho cùng một thuộc tính. Nó được thực thi ngay khi một đối tượng được tạo cho lớp mà không cần bất kỳ lời gọi thủ công nào
- tự biến. Nó giống như một trình giữ chỗ cho đối tượng được tạo cho lớp bên trong phương thức __init__
Ví dụ
đầu ra
Student1: Ryan 18 NYU Student1: Roy 18 Duke
- Chúng tôi đã tạo hai đối tượng, student1 và student2 và hai đối tượng chứa thông tin khác nhau về hai cá nhân
- Điều xảy ra ở đây là khi một đối tượng được tạo, phương thức __init__ được gọi và đối tượng sẽ thay thế biến self trong phương thức
Khi chúng ta tạo student1
Khi chúng tôi tạo student2
Cả thuộc tính Instance và thuộc tính Lớp đều đóng vai trò nổi bật trong việc tạo lớp âm thanh. Đây là một ví dụ sử dụng cả biến lớp và biến thể hiện để tạo một lớp
Thuộc tính lớp
Python so với Java. Lập trình hướng đối tượng
03. 40
Đánh dấu là đã hoàn thành
Vật liệu hỗ trợCác slide khóa học hướng dẫn được đề xuất [. pdf] Mã mẫu [. nén]
Trở thành Thành viên để tham gia cuộc trò chuyện
Trong một màn hình điện thoại gần đây, tôi đã quyết định sử dụng một thuộc tính lớp để triển khai một API Python nhất định. Người phỏng vấn của tôi đã thách thức tôi, đặt câu hỏi liệu mã của tôi có hợp lệ về mặt cú pháp hay không, khi nó được thực thi, v.v. Trên thực tế, bản thân tôi cũng không chắc chắn về câu trả lời. Vì vậy, tôi đã làm một số đào. Thuộc tính lớp Python. khi nào [hoặc làm thế nào] sử dụng chúng. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn những cạm bẫy phổ biến và kết luận bằng một danh sách các trường hợp sử dụng hợp lệ có thể giúp bạn tiết kiệm thời gian, năng lượng và dòng mã
Chia sẻ
Chia sẻTrong một màn hình điện thoại gần đây, tôi đã quyết định sử dụng một thuộc tính lớp để triển khai một API Python nhất định. Người phỏng vấn của tôi đã thách thức tôi, đặt câu hỏi liệu mã của tôi có hợp lệ về mặt cú pháp hay không, khi nó được thực thi, v.v. Trên thực tế, bản thân tôi cũng không chắc chắn về câu trả lời. Vì vậy, tôi đã làm một số đào. Thuộc tính lớp Python. khi nào [hoặc làm thế nào] sử dụng chúng. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn những cạm bẫy phổ biến và kết luận bằng một danh sách các trường hợp sử dụng hợp lệ có thể giúp bạn tiết kiệm thời gian, năng lượng và dòng mã
Tác giả Charles Marsh
Charles đã từng là trưởng nhóm kỹ thuật tại Khan Academy, Cedar và Spring Discovery
Ghi chú của biên tập viên. Bài viết này đã được cập nhật vào ngày 29/11/22 bởi nhóm biên tập của chúng tôi. Nó đã được sửa đổi để bao gồm các nguồn gần đây và phù hợp với các tiêu chuẩn biên tập hiện tại của chúng tôi
Gần đây tôi đã có một màn hình điện thoại phỏng vấn lập trình, trong đó chúng tôi đã sử dụng một trình soạn thảo văn bản hợp tác và điều đó khiến tôi suy nghĩ về các thuộc tính của lớp Python
Tôi được yêu cầu triển khai một API nhất định và đã chọn thực hiện bằng Python. Trừu tượng hóa câu lệnh vấn đề, giả sử tôi cần một lớp có các thể hiện được lưu trữ một số
{:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
3 và một số {:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
4Tôi hít một hơi thật sâu và bắt đầu gõ. Sau một vài dòng, tôi đã có một cái gì đó như thế này
class Service[object]:
data = []
def __init__[self, other_data]:
self.other_data = other_data
...
Người phỏng vấn của tôi đã ngăn tôi lại
người phỏng vấn. “Dòng đó
5. Tôi không nghĩ đó là Python hợp lệ. ”{:lang='python'} class MyClass[object]: class_var = 1 def __init__[self, i_var]: self.i_var = i_var
Tôi. “Tôi khá chắc là. Nó chỉ đặt giá trị mặc định cho thuộc tính thể hiện. ”
người phỏng vấn. “Khi nào đoạn mã đó được thực thi?”
Tôi. “Tôi không thực sự chắc chắn. Tôi sẽ chỉ sửa nó để tránh nhầm lẫn. ”
Để tham khảo và cung cấp cho bạn ý tưởng về mục đích của tôi, đây là cách tôi sửa đổi mã
class Service[object]:
def __init__[self, other_data]:
self.data = []
self.other_data = other_data
...
Hóa ra, cả hai chúng ta đều sai. Câu trả lời thực sự nằm ở việc hiểu được sự khác biệt giữa các thuộc tính lớp Python và các thuộc tính thể hiện của Python
Ghi chú. Nếu bạn là một chuyên gia xử lý các thuộc tính lớp Python, bạn có thể bỏ qua để chuyển sang các trường hợp sử dụng
Thuộc tính lớp Python
Người phỏng vấn của tôi đã sai ở chỗ đoạn mã trên hợp lệ về mặt cú pháp
Tôi đã sai ở chỗ mã không đặt "giá trị mặc định" cho thuộc tính thể hiện. Thay vào đó, nó định nghĩa
{:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
3 như một thuộc tính lớp có giá trị {:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
7Theo kinh nghiệm của tôi, các thuộc tính lớp Python là một chủ đề mà nhiều người biết điều gì đó, nhưng ít người hiểu hoàn toàn
Biến lớp Python so với. Biến thể hiện. Có gì khác biệt?
Thuộc tính lớp Python là thuộc tính của lớp [thông tư, tôi biết], chứ không phải là thuộc tính của một thể hiện của lớp
Hãy sử dụng một ví dụ lớp Python để minh họa sự khác biệt. Ở đây,
{:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
8 là thuộc tính lớp và {:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
9 là thuộc tính thể hiện{:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
Lưu ý rằng tất cả các phiên bản của lớp đều có quyền truy cập vào
{:lang='python'}
class MyClass[object]:
class_var = 1
def __init__[self, i_var]:
self.i_var = i_var
8 và nó cũng có thể được truy cập như một thuộc tính của chính lớp đó{:lang='python'}
foo = MyClass[2]
bar = MyClass[3]
foo.class_var, foo.i_var
## 1, 2
bar.class_var, bar.i_var
## 1, 3
MyClass.class_var ##