Đây là vấn đề của tôi. Tôi muốn lớp sau có một loạt thuộc tính thuộc tính. Tôi có thể viết tất cả chúng ra như foo
và bar
hoặc dựa trên một số ví dụ khác mà tôi đã thấy, có vẻ như tôi có thể sử dụng trình trang trí lớp học, metaclass hoặc ghi đè phương thức __new__
để đặt thuộc tính tự động. Tôi chỉ không chắc những gì "đúng" cách để làm điều đó sẽ được.Tôi có nên sử dụng metaclass, trang trí lớp học hoặc ghi đè phương pháp __new__ không?
class Test(object):
def calculate_attr(self, attr):
# do calculaty stuff
return attr
@property
def foo(self):
return self.calculate_attr('foo')
@property
def bar(self):
return self.calculate_attr('bar')
Khi nghi ngờ, luôn luôn đi với đơn giản và rõ ràng. Nếu * bạn * không thể dễ dàng tìm ra nó, cả hai đều không thể giả vờ (như tôi), người sẽ được yêu cầu duy trì mã của bạn. –
Khi bạn thay đổi bản chất câu hỏi của mình, tốt nhất là chỉ nên mở một câu hỏi mới. –