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 dictvà 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à dicttự 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 DictWatchthay vì dictvà 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 đỡ!