Cách thay đổi tên thuộc tính trong Python
Chúng tôi muốn làm cho nó sao cho bất cứ khi nào chúng tôi gán cho thuộc tính 9, tất cả các giá trị trước đó của thuộc tính 9 sẽ được lưu trữ ở đâu đó Show
Chúng tôi muốn tạo một thuộc tính 2 sẽ hiển thị cho chúng tôi tất cả các giá trị trước đó cho 9 trên một đối tượng cụ thể là 6Các phương thức getter và setter (không được khuyến nghị)Trong nhiều ngôn ngữ lập trình, như Java, giải pháp cho vấn đề này là các phương thức getter và setter Vì vậy, thay vì có thuộc tính 9, chúng ta sẽ có thuộc tính private. Python không có thuộc tính riêng tư, nhưng đôi khi chúng tôi đặt dấu gạch dưới ( 6) trước tên thuộc tính để lưu ý rằng thuộc tính đó là riêng tư theo quy ướcĐây là phiên bản cập nhật của lớp 6 của chúng tôi với phương thức getter và setter và thuộc tính riêng tư (theo quy ước) 8
Trên lớp mới này, thay vì truy cập trực tiếp vào 9 (không còn hoạt động nữa), chúng ta sẽ gọi phương thức 0
Và để đặt vị trí, chúng tôi sẽ gọi phương thức 1
Lợi ích của các phương thức getter và setter là chúng ta có thể nối vào các phương thức này, đặt bất kỳ mã nào chúng ta muốn bên trong chúng Ví dụ: trong phương pháp 1 của chúng tôi, chúng tôi đang thêm vào danh sách 2
Vì vậy, thuộc tính 2 hiện hiển thị tất cả các vị trí chúng tôi đã từng đặt cho đối tượng 6 này
Sử dụng các thuộc tính để nối vào việc gán một thuộc tínhTrong Python, chúng ta không có xu hướng sử dụng các phương thức getter và setter. Chúng tôi không có 6, 7, và 0, và 1 cho mỗi thuộc tính. Thay vào đó, chúng ta có xu hướng chỉ gán các thuộc tính và đọc từ các thuộc tính theo ý muốnNhưng trong tình huống cụ thể này (khi chúng tôi có một thuộc tính và chúng tôi muốn thay đổi cách thức hoạt động của nó), chúng tôi gặp khó khăn. Chúng ta cần một số cách để nối vào việc gán thuộc tính đó. May mắn thay, trong Python, có một cách để làm điều này. chúng ta có thể sử dụng một tài sản Đây là lớp 6 đã sửa đổi của chúng tôi với các thuộc tính
Các thuộc tính cho phép chúng ta nối vào việc nhận một thuộc tính
Bây giờ, khi chúng tôi truy cập thuộc tính 9, thực ra nó đang truy cập thuộc tính 8Nhưng các thuộc tính cũng cho phép chúng tôi tùy chỉnh những gì xảy ra khi chúng tôi gán cho một thuộc tính cụ thể Theo mặc định, nếu chúng ta gán cho một thuộc tính, chúng ta sẽ gặp lỗi. Nhưng trong trường hợp của chúng tôi, chúng tôi không gặp lỗi 0Nó hoạt động vì chúng tôi đã triển khai một trình thiết lập cho thuộc tính của mình 1Như bạn có thể thấy, cú pháp của property setters hơi lạ. Vì vậy, thay vì ghi nhớ cú pháp, bạn có thể tra cứu khi cần Cú pháp của trình thiết lập thuộc tính hơi lạ một chút, vì vậy tôi khuyên bạn không nên ghi nhớ nó (chỉ cần tra cứu nó khi/nếu bạn cần) Phá vỡ cú pháp cho setters thuộc tínhCú pháp thiết lập thuộc tính bắt đầu bằng tên hoặc thuộc tính của chúng ta ( 9), theo sau là 4. Chúng tôi sử dụng nó như một công cụ trang trí để trang trí một phương pháp 9 (được đặt tên giống như tài sản của chúng tôi) 2Chúng tôi chấp nhận một đối số đại diện cho bất kỳ nội dung nào được gán cho thuộc tính này (ở phía bên phải của dấu bằng trong quá trình gán) Sau đó, chúng tôi đang lưu trữ giá trị thực tế đó trên 8 và mỗi khi 9 thay đổi, chúng tôi sẽ thêm từng giá trị vào danh sách 8 của mình 3Chúng tôi không bao giờ gán trực tiếp cho thuộc tính riêng tư của mìnhVì vậy, khi chúng tôi truy cập danh sách 2, cả hai vị trí của chúng tôi đều được phản ánh
Bất cứ khi nào 9 thay đổi, 2 sẽ được cập nhậtLưu ý rằng ngay cả trong trình khởi tạo của chúng tôi, chúng tôi đang chỉ định cho 9 (chứ không phải 8) 5Đó là lý do "San Diego" là giá trị đầu tiên trong 4 này. khi chúng tôi gán cho thuộc tính 9 trong trình khởi tạo của mình, nó được gọi là trình thiết lập thuộc tính của chúng tôiTrên thực tế, mỗi khi 9 được gán cho, setter sẽ được gọi cho thuộc tính nàyTóm lượcNếu bạn muốn tùy chỉnh điều gì sẽ xảy ra khi bạn gán cho một thuộc tính cụ thể trên lớp của mình trong Python, bạn có thể sử dụng thuộc tính có trình thiết lập |