前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ValueError: too many values to unpack (expected 2)

ValueError: too many values to unpack (expected 2)

作者头像
狼啸风云
修改2022-09-02 21:04:55
8.1K0
修改2022-09-02 21:04:55
举报
class Mymeta(type):

    def __new__(cls, class_name, class_bases, class_attrs):
        print('--->', cls)  # ---> <class '__main__.Mymeta'>
        print('--->', class_name)  # ---> Chinese
        print('--->', class_bases)  # ---> (<class 'object'>,)
        print('--->', class_attrs)  # 'Chinese', 'country': 'china', 'skin': 'yello', '__init__': ....
        print(class_attrs.items())
        update_attrs = {}
        for key, value in class_attrs:
            if not callable(value) and not key.startswith('__'):
                update_attrs[key.upper()] = value
            else:
                update_attrs[key] = value

        return type.__new__(cls, class_name, class_bases, update_attrs)


class Chinese(object, metaclass=Mymeta):
    country = 'china'
    skin = 'yello'

返回了下面的错误:

    for key, value in class_attrs:
ValueError: too many values to unpack (expected 2)

原因是字典这个是一个迭代器对象,参考官方文档找到下列说明,字典只支持Key的遍历,,如果想对key,value,则可以使用items方法。 The “implicit” iteration that dictionaries support only iterates over keys.

python只支持对于key的遍历,所以不能使用for k,v这种形式,这个时候会提示ValueError: too many values to unpack, 正确代码如下:

for key, value in class_attrs.items():
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档