Ok Tôi đã đọc về cách sử dụng trang trí @property trong Python thay vì các phương pháp cụ thể để nhận, thiết lập và xóa. Một số mã ví dụ được hiển thị bên dưới.Tự động thiết lập getter, setter và deleter trong python
class Person(object):
def __init__(self):
self._firstName = None
self._lastName = None
self._age = None
@property
def firstName(self): return self._firstName
@firstName.setter
def firstName(self, val): self._firstName = val
@firstName.deleter
def firstName(self): del self._firstName
@property
def lastName(self): return self._lastName
@lastName.setter
def lastName(self, val): self._lastName = val
@lastName.deleter
def lastName(self): del self._lastName
@property
def age(self): return self._age
@age.setter
def age(self, val): self._age = val
@age.deleter
def age(self): del self._age
Peter = Person()
Peter.firstName = 'Peter'
Peter.lastName = 'Smith'
Peter.age = 21
print ' '.join([Peter.firstName, Peter.lastName])
Như bạn có thể thấy, phần lớn mã trong ví dụ được dành để xác định phương pháp.
Câu hỏi của tôi là liệu có cách nào để tự động chỉ định trình khởi động, trình thiết lập và deleter cho từng biến của tôi không? Trong mã thực tế của tôi, tôi có nhiều biến hơn và có vẻ như rất nhiều mã lặp lại thiết lập mỗi phương thức.
Tôi nhận ra rằng đối với những trường hợp đơn giản, điều này có thể không thực sự cần thiết tuy nhiên tôi muốn viết mã các phương thức ngay bây giờ trong trường hợp tôi quyết định tăng độ phức tạp của lớp.
* "tuy nhiên tôi muốn viết mã các phương pháp ngay bây giờ trong trường hợp tôi quyết định tăng độ phức tạp của lớp." * - tại sao bạn không thêm chúng khi cần? Chỉ thực hiện những gì bạn cần * now * và refactor khi mã của bạn phát triển. Mọi thứ bạn thêm ngay bây giờ để hỗ trợ tiện ích mở rộng hoặc tính năng có thể xảy ra hoặc có thể không xảy ra chỉ là tiếng ồn. –