Hướng dẫn should i use getter and setter in python? - tôi có nên sử dụng getter và setter trong python không?
Cách "Pythonic" không phải là sử dụng "getters" và "setters", mà là sử dụng các thuộc tính đơn giản, như câu hỏi thể hiện và 1 để xóa (nhưng tên được thay đổi để bảo vệ ... tích hợp vô tội): Show
Nếu sau này, bạn muốn sửa đổi cài đặt và nhận được, bạn có thể làm như vậy mà không cần phải thay đổi mã người dùng, bằng cách sử dụng trình trang trí 2:
. Sau khi xác định ở trên, cài đặt ban đầu, nhận và xóa mã là như nhau:
Bạn nên tránh điều này:
Đầu tiên, những điều trên không hoạt động, vì bạn không cung cấp đối số cho trường hợp rằng thuộc tính sẽ được đặt thành (thường là 3), đó sẽ là:
Thứ hai, điều này nhân đôi mục đích của hai phương pháp đặc biệt, 4 và 5.Thứ ba, chúng tôi cũng có các chức năng tích hợp 6 và 7.
Bộ trang trí 8 là để tạo ra getters và setters.Ví dụ: chúng ta có thể sửa đổi hành vi cài đặt để đặt các hạn chế giá trị được đặt:
Nói chung, chúng tôi muốn tránh sử dụng 2 và chỉ sử dụng các thuộc tính trực tiếp.Đây là những gì được mong đợi bởi người dùng Python. Theo quy tắc ít nhất, bạn nên cố gắng cung cấp cho người dùng những gì họ mong đợi trừ khi bạn có một lý do rất thuyết phục ngược lại. Trình diễnVí dụ, giả sử chúng tôi cần thuộc tính được bảo vệ của đối tượng của chúng tôi là một số nguyên từ 0 đến 100 và ngăn chặn việc xóa nó, với các thông báo phù hợp để thông báo cho người dùng về việc sử dụng đúng của nó:
(Lưu ý rằng 0 đề cập đến 1 nhưng các phương thức thuộc tính đề cập đến 2.Và cách sử dụng:
Tên có quan trọng không?Vâng, họ làm. 4 và 5 tạo các bản sao của thuộc tính gốc. Điều này cho phép các lớp con sửa đổi đúng hành vi mà không thay đổi hành vi trong cha mẹ.
Bây giờ để hoạt động này, bạn phải sử dụng tên tương ứng: 0Tôi không chắc nơi này sẽ hữu ích, nhưng trường hợp sử dụng là nếu bạn muốn có thuộc tính GET, SET và/hoặc XÓA CHỈ. Có lẽ tốt nhất để bám vào cùng một tài sản có cùng tên. Sự kết luậnBắt đầu với các thuộc tính đơn giản. Nếu sau này bạn cần chức năng xung quanh cài đặt, nhận và xóa, bạn có thể thêm nó với bộ trang trí tài sản. Tránh các chức năng có tên 6 và 7 - đó là những gì thuộc tính dành cho.
Bạn có nên sử dụng setters và getters?Getters và setters được sử dụng để bảo vệ dữ liệu của bạn, đặc biệt là khi tạo các lớp. Đối với mỗi biến thể hiện, một phương thức Getter trả về giá trị của nó trong khi một phương thức setter đặt hoặc cập nhật giá trị của nó. Cho rằng, getters và setters còn được gọi là người truy cập và đột biến, tương ứng.. For each instance variable, a getter method returns its value while a setter method sets or updates its value. Given this, getters and setters are also known as accessors and mutators, respectively.
Tôi có thể sử dụng gì thay vì getters và setters?Bạn có thể sử dụng Lombok - để tránh thủ công phương thức getter và setter.Nhưng nó tự tạo ra.Việc sử dụng Lombok làm giảm đáng kể số lượng mã.lombok - to manually avoid getter and setter method. But it create by itself. The using of lombok significantly reduces a lot number of code.
Ưu điểm của việc sử dụng getters và setters là gì?1. Phương thức Getter và Setter cung cấp cho bạn kiểm soát tập trung về cách một trường nhất định được khởi tạo và cung cấp cho máy khách, điều này giúp xác minh và gỡ lỗi dễ dàng hơn nhiều.Để xem chủ đề nào đang truy cập và giá trị nào sẽ được đưa ra, bạn có thể dễ dàng đặt các điểm dừng hoặc câu lệnh in.2.gives you centralized control of how a certain field is initialized and provided to the client, which makes it much easier to verify and debug. To see which thread is accessing and what values are going out, you can easily place breakpoints or a print statement. 2.
Khi nào tôi nên sử dụng @Property trong Python?@Property là một công cụ trang trí tích hợp cho hàm tài sản () trong Python.Nó được sử dụng để cung cấp chức năng "đặc biệt" cho một số phương pháp nhất định để làm cho chúng hoạt động như getters, setters hoặc deleter khi chúng ta xác định các thuộc tính trong một lớp.to give "special" functionality to certain methods to make them act as getters, setters, or deleters when we define properties in a class. |