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. Vâng, nó thực sự là một lớp học mà phân lớp dict
và thực hiện một vài tính năng bổ sung. Dù sao, những gì tôi muốn làm là phân lớp dict
bản thân mình 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óLàm thế nào để đúng phân lớp dict và ghi đè __getitem__ & __setitem__
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à chìa 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 tôi đang chuyển sang phân lớp DictWatch
thay vì dict
và thay đổi cuộc gọi đến superconstructor. Tuy nhiên, dường như không có gì xảy ra. Tôi nghĩ rằng tôi đã được thông minh, nhưng tôi tự hỏi nếu tôi nên đi một hướng khác nhau.
Cảm ơn sự giúp đỡ!
Bạn đã cố gắng sử dụng in thay vì đăng nhập? Ngoài ra, bạn có thể giải thích làm thế nào để bạn tạo/cấu hình bạn đăng nhập? – pajton
Không phải 'dict .__ init__' lấy' * args'? –
Trông giống như một ứng cử viên tốt cho một người trang trí. –