装饰器练习题

收藏
装饰器
4
May 22, 2019
有一个 字典{'a':1,'b':2,'c':3},现在有一个这个需求:
1).向字典中添加新的键值对,如果字典中的键,已经存在,则取消添加,打印提示:键已经存在。
2).如果键不存在,则添加到字典中。(请使用装饰器来实现,顺便复习下*args和**kwargs的用法)

回答

Bravian回答

def dict_check(func):
    def wrapper(*args, **kwargs):
        dict_obj: dict = args[0]
        key = args[1]
        if key in dict_obj.keys():
            print("键已经存在")
        else:
            return func(*args, **kwargs)

    return wrapper


class MyDict(dict):
    @dict_check
    def add(self, key, value):
        self[key] = value


d1 = MyDict({'a': 1, 'b': 2, 'c': 3})
d1.add("a", 4)
print(d1)
d1.add("d", 4)
print(d1)

 

(0)

提交成功