Python sử dụng setter trong __init__
Python có nhiều tính năng và dễ bị choáng khi học. Hôm nay chúng ta sẽ chỉ tập trung tìm hiểu một trong những tính năng đó. người trang trí 3 Show Chúng tôi sẽ giải thích các thuộc tính là gì, tại sao bạn có thể muốn sử dụng chúng và nơi chúng phù hợp với cấu trúc lớp của Python Khi học lập trình, thường có một đường cong học tập dốc sau khi bạn học những điều cơ bản. Có một khoảng cách lớn giữa hướng dẫn và các dự án trong thế giới thực. Trình trang trí 3 là một trong những tính năng mà bạn hiếm khi thấy trong hướng dẫn nhưng đôi khi điều đó có thể rất hữu íchTài sản là gì?Các thuật ngữ như 5 và 6 thường được sử dụng xung quanh khi thảo luận về ngôn ngữ lập trình. Thật hữu ích khi làm chậm lại để xác định ý nghĩa thực sự của từng thuật ngữ trong PythonMột thuộc tính là một biến dành riêng cho một đối tượng lớp. Nếu bạn không biết "đối tượng" là gì, hãy xem bài viết này để xem xét nhanh. Ví dụ: nếu bạn có một lớp tên là 7, một thuộc tính sẽ là bất kỳ biến nào tồn tại trên mỗi đối tượng của lớp đó. Bạn tạo các thuộc tính bằng cách sử dụng từ khóa 8. "Thuộc tính" chỉ là tên chúng ta đặt cho các biến thuộc về một lớp. Đây là một ví dụ, sử dụng lớp 7
0 đề cập đến thuộc tính hiện có trên các đối tượng của lớp 7. Chúng ta có thể thiết lập nhiều thuộc tính, tùy thuộc vào những gì chúng ta cần các đối tượng lớp có. Ví dụ: chúng ta có thể đặt 2 hoặc 3 làm thuộc tính của các đối tượng của lớp 7Một phương thức là một chức năng thuộc về một lớp. Ví dụ, trong lớp có tên là 7, một phương thức sẽ là bất kỳ hàm nào tồn tại bên trong lớp đó. Đây là một ví dụ, sử dụng lớp 7 của chúng tôi
Hàm 7 được gọi là "một phương thức trên lớp Human". Quan trọng. Các phương thức luôn nhận đối số 8 làm tham số đầu tiên của chúng. Điều này là do các phương thức luôn được kết nối với một lớp. Trong trường hợp này, 7 được gọi là "phương thức thể hiện" và sẽ luôn nhận đối tượng mà nó đang được gọi làm đối số đầu tiên. Để tìm hiểu thêm về từng loại phương pháp, hãy xem bài viết nàyThuộc tính là một loại thuộc tính đặc biệt. Nó là một thuộc tính có hai phương thức được gán cho nó. một "getter" và một "setter". Hãy xem xét một số mã để giải thích thêm ________số 8Như bạn có thể thấy, chúng tôi đang sử dụng nhiều mã giống nhau. Chúng tôi đã đưa vào một hàm "setter" mới có tên là 00, sau đó chúng tôi xác định biến 01 là một thuộc tính của lớp, với getter là 7 và setter là 00. Đó là những gì chức năng 04 đang làm. nó nhận một getter cho tham số đầu tiên, một setter cho tham số thứ hai và tạo một biến thuộc tính trên lớp, nó lưu trữ trong tên mà bạn gánCác thuộc tính trên các lớp rất hữu ích vì chúng cho phép chúng ta thực hiện một số xử lý động trên các thuộc tính khi chúng ta lấy hoặc đặt chúng. Ví dụ: nếu lớp của bạn có thuộc tính 01, nhưng bạn muốn đảm bảo rằng giá trị tuổi luôn được tính theo tháng, bạn có thể đảm bảo điều đó bằng cách đặt thuộc tính 01 thành thuộc tính. Kiểm tra mã này để xem ý tôi là gì 0người trang tríĐể hợp lý hóa hơn nữa quá trình tạo thuộc tính, chúng tôi sẽ sử dụng trình trang trí 3. Nếu bạn chưa từng sử dụng/thấy các công cụ trang trí, hãy theo dõi khóa học nhỏ của chúng tôi để bắt kịp tốc độ một cách nhanh chóngTrình trang trí 3 hoạt động như một lối tắt để sử dụng hàm 04 mà chúng tôi đã sử dụng trước đó. Trên hết, nó làm cho mã sạch hơn một chút. Ngoài ra, trình trang trí 3 thực thi trước khi khởi tạo lớp, do đó không có cơ hội vô tình sử dụng thuộc tính trước khi nó trở thành thuộc tính. Hãy đi sâu vào bằng cách kiểm tra mã này 2Ở đây, chúng tôi sử dụng các công cụ trang trí trên các hàm getter và setter của chúng tôi, mà chúng tôi hiện đã đổi tên thành tên của thuộc tính. Hãy đi qua từng cái một cách cụ thể Phương thức getter, 01, là phương thức áp dụng trình trang trí 3 cho nó. Chúng ta có thể sử dụng điều này để định dạng và thay đổi kết quả đầu ra của getter mỗi khi thuộc tính được tham chiếuNhưng vì 01 là một hàm, nên chúng ta vẫn cần lưu trữ giá trị của tuổi con người ở đâu đó. Đó là lúc thuộc tính 24 phát huy tác dụngKhi một đối tượng của lớp 7 được khởi tạo, phương thức 26 sẽ chạy. Điều này đặt thuộc tính 01 trên đối tượng 8. Bởi vì chúng tôi đã viết một trình thiết lập tùy chỉnh cho thuộc tính 01, trình thiết lập tùy chỉnh sẽ chạyTrong trình thiết lập tùy chỉnh, chúng tôi lấy giá trị 01 đến và đặt thuộc tính 24 trên đối tượng 8. Tại thời điểm này, bằng cách sử dụng trình thiết lập, chúng tôi có thể kiểm soát nhiều hơn cách đặt thuộc tính 24Khi phương thức 26 chạy xong, đối tượng sẽ có
Để hiển thị những gì tôi muốn nói, hãy xem xét đoạn mã sau 0Bạn nghĩ cái này sẽ in cái gì? Điều này sẽ xuất ra như sau 3Trang trí chức năng getter bằng trình trang trí 3 cho phép chúng tôi thay đổi cách tài sản sẽ được phục vụ cho bất kỳ ai gọi nó. Ví dụ: tôi có thể sử dụng mã để trả về số tháng tương đương với độ tuổi bằng cách tạo một thuộc tính khác, 09 6Bây giờ, bất cứ khi nào biến 32 được gọi, nó sẽ trả về 8Hãy đi sâu vào setter. Bây giờ chúng ta đã xác định một thuộc tính bằng cách sử dụng trình trang trí 3, chúng ta có thể viết một trình thiết lập cho nó bằng cách sử dụng 34. Hãy nhớ thay thế 35 bằng tên thuộc tính thực tế bên trong lớp học của bạn. Hãy xem cách chúng tôi đã làm điều này trong lớp 7 3Bộ thiết lập trên thuộc tính 01 được trang trí bằng bộ trang trí 08, cho phép chúng tôi sửa đổi cách cho phép đặt thuộc tính này. Ví dụ: chúng ta có thể hạn chế tuổi của ai đó chỉ ở dạng số nguyên bằng cách thực hiện điều này 0Bây giờ, nếu chúng ta thử chạy đoạn mã sau 1Đây là những gì đầu ra sẽ được 2Vì vậy, bạn có thể thấy rằng chức năng thiết lập tùy chỉnh của chúng tôi sẽ ngăn không cho bất kỳ thứ gì ngoại trừ số nguyên được đặt vào thuộc tính 01. Bởi vì chúng tôi đã đưa ra TypeError, chương trình sẽ ngừng chạy bất cứ khi nào chúng tôi cố gắng đặt một giá trị không nguyên trên thuộc tính tuổi. Thông báo lỗi được hiển thị cùng với dấu vết cho chúng tôi biết nơi xảy ra lỗiPhần kết luậnCó một trình trang trí 3 một cách ngắn gọn. Nói chung, đó là một cách rất hiệu quả để giành quyền kiểm soát nhiều hơn đối với cách các thuộc tính được đặt và định dạng bên trong các lớp của bạn. Bằng cách sử dụng trình thu thập tùy chỉnh, bạn có thể sửa đổi cách trình bày các thuộc tính. Bằng cách sử dụng trình cài đặt tùy chỉnh, bạn có thể kiểm soát cách từng thuộc tính được phép đặtNếu bạn muốn tìm hiểu thêm về Python, hãy cân nhắc đăng ký Khóa học Python hoàn chỉnh của chúng tôi, khóa học này sẽ đưa bạn từ người mới bắt đầu đến nâng cao (bao gồm OOP, phát triển web, phát triển không đồng bộ, v.v. ). Chúng tôi có bảo đảm hoàn lại tiền trong 30 ngày, vì vậy bạn thực sự không mất gì khi dùng thử. Chúng tôi muốn có bạn Bạn có nên sử dụng setters trong Python không?Mặc dù mẫu getter và setter khá phổ biến trong các ngôn ngữ lập trình khác, nhưng đó không phải là trường hợp trong Python. Việc thêm các phương thức getter và setter vào lớp học của bạn có thể làm tăng đáng kể số dòng trong mã của bạn .
Cách Pythonic nhất để sử dụng getter và setter là gì?Getters và Setters trong python thường được sử dụng khi. . Chúng tôi sử dụng getters và setters để thêm logic xác thực xung quanh việc nhận và đặt giá trị Để tránh truy cập trực tiếp vào một trường lớp tôi. e. các biến riêng tư không thể được truy cập trực tiếp hoặc sửa đổi bởi người dùng bên ngoài Điều gì sẽ xảy ra nếu getters và setters được đặt ở chế độ riêng tư?Các phương thức getter/setter riêng tư cung cấp một nơi để thêm mã kiểm tra lỗi hoặc hành vi bổ sung . Họ có thể cung cấp một nơi để ghi lại các thay đổi trạng thái hoặc truy cập vào các trường.
Mối liên hệ giữa các phương thức đóng gói và getter và setter là gì?Đóng gói có nghĩa là ngăn các đối tượng khác sửa đổi trực tiếp các giá trị. Nếu bạn đặt getters và setters ở chế độ riêng tư, chỉ các phương thức khác trong lớp đó mới có thể gọi chúng . |