Có một cách hay để sắp xếp thuộc tính lớp trong khung của một hàm, bằng cách sử dụng trình trang trí áp dụng.ngưng sử dụng trang trí
class Example(object):
@apply
def myattr():
doc = """This is the doc string."""
def fget(self):
return self._half * 2
def fset(self, value):
self._half = value/2
def fdel(self):
del self._half
return property(**locals())
Nhưng hiện đã áp dụng đã không được chấp nhận.
Có khả năng nào để đạt được sự đơn giản và dễ đọc như vậy đối với tài sản, với mới, thay vào đó là "cú pháp cuộc gọi mở rộng"?
cách tiếp cận của tôi là giống như Anurag, nhưng, tôi không phải bây giờ phù thuỷ một tốt hơn, xin vui lòng xem xét:
def prop(f):
return property(**f())
class A(object):
@prop
def myattr():
def fget(self):
return self._myattr
def fset(self, value):
self._myattr = value
return locals()
Tôi không biết điều này và tôi rất thích nó. Phép thuật 'áp dụng' ở trên quá khó đọc nên tôi không biết câu hỏi đó là gì. Tôi biết @property và sử dụng nó rất nhiều, nhưng .setter và .deleter là mới đối với tôi và nhìn tuyệt vời (tự tài liệu mã) :) –
Bạn đang thiếu tự trong các đối số để getter, không? –
@David: chính xác, cố định, ta. – bobince