Tôi đã viết một lớp sẽ được sử dụng để lưu trữ các tham số một cách thuận tiện để tẩy. Nó quá tải __setattr__
để truy cập thuận tiện. Nó cũng sử dụng một danh sách để nhớ thứ tự trong đó các thuộc tính được thêm vào, để thứ tự lặp lại có thể dự đoán được và không đổi. Ở đây là:Làm thế nào để xử lý cuộc gọi đến __setattr__ từ __init__?
class Parameters(object):
def __init__(self):
self._paramOrder = []
def __setattr__(self, name, value):
self._paramOrder.append(name)
object.__setattr__(self, name, value)
def __delattr__(self, name):
self._paramOrder.remove(name)
object.__delattr__(self, name)
def __iter__(self):
for name in self._paramOrder:
yield self.name
def iteritems(self):
for name in self._paramOrder:
yield name, self.name
Vấn đề là __init__
gọi của tôi quá tải __setattr__
để thêm _paramOrder
vào từ điển ví dụ. Có cách nào để xử lý việc này mà không thêm trường hợp đặc biệt vào __setattr__
?
tôi làm điều đó ngay bây giờ, nhưng tôi vẫn cần một trường hợp đặc biệt, bởi vì nếu không tên '_paramOrder' sẽ được bổ sung cho' _paramOrder'. –
không phải là mã bạn đã hiển thị. Điều này sẽ bỏ qua phương thức '__setattr__' của' Parameters'. – aaronasterling
Bạn nói đúng. Tôi hiểu lầm, nhưng bây giờ tôi thấy. –