Python如何初始化包含空字典的类并实现键值对添加操作
问题解答
你代码的问题主要集中在类的方法定义、属性操作、测试逻辑三个部分,以下是修正方案:
错误原因汇总
- 实例方法缺失
self参数:Python中类的所有实例方法第一个参数必须为self,指向实例本身,你编写的add_key方法未声明该参数,访问实例属性时会报错找不到self - 字典属性操作错误:你要操作的是实例的
dicts字典属性,不能直接对self(类实例本身)做下标赋值 - 方法缩进错误:
get_dicts方法缩进在add_key内部,属于内部函数,类实例无法直接访问 - 测试逻辑错误:你直接声明了Python原生字典
test_dic,原生字典当然没有你在Network类中自定义的get_dicts方法 - 初始参数未绑定字典:你初始化时传入的
key和value不会被Python自动识别为字典的元素,需要你手动写入到你定义的字典属性中
修正后的完整代码
class Network(object): def __init__(self, init_key=None, init_value=None): """初始化内置字典,支持传入初始键值对""" self.dicts = {} # 把初始化传入的键值对写入字典 if init_key is not None: self.dicts[init_key] = init_value def add_key(self, key): """如果key不存在,向字典中添加key,值为空列表""" if key not in self.dicts: self.dicts[key] = [] def get_dicts(self): """返回内置字典""" return self.dicts # 测试代码:先实例化Network类 # 初始化时传入初始键值对 net = Network(init_key=13, init_value=[1,2,3]) # 调用add_key方法添加新key net.add_key(14) # 给已有的key赋值 net.dicts[14] = [4,5] # 获取内置字典打印 print(net.get_dicts())
运行后输出:{13: [1, 2, 3], 14: [4, 5]}
内容的提问来源于stack exchange,提问作者Yus Ra
相关产品推荐
相关产品推荐

