Tôi đang gỡ lỗi một số mã và tôi muốn tìm hiểu khi nào một từ điển cụ thể được truy cập. Chà, nó thực sự là một lớp phân lớp dict
và triển khai một vài tính năng bổ sung. Dù sao, những gì tôi muốn làm là dict
tự phân lớp và thêm ghi đè __getitem__
và __setitem__
tạo ra một số đầu ra gỡ lỗi. Ngay bây giờ, tôi có
class DictWatch(dict):
def __init__(self, *args):
dict.__init__(self, args)
def __getitem__(self, key):
val = dict.__getitem__(self, key)
log.info("GET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
return val
def __setitem__(self, key, val):
log.info("SET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
dict.__setitem__(self, key, val)
' name_label'
là một khóa cuối cùng sẽ được đặt mà tôi muốn sử dụng để xác định đầu ra. Sau đó, tôi đã thay đổi lớp mà tôi đang thiết lập thành lớp con DictWatch
thay vì dict
và thay đổi lời gọi thành siêu khối lệnh. Tuy nhiên, dường như không có gì đang xảy ra. Tôi nghĩ rằng tôi đã thông minh, nhưng tôi tự hỏi liệu tôi có nên đi theo một hướng khác.
Cảm ơn đã giúp đỡ!