zoukankan      html  css  js  c++  java
  • ValueError: too many values to unpack (expected 2)

    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():

  • 相关阅读:
    HDU 2192 MagicBuilding
    HDU 2148 Score
    HDU 1847 Good Luck in CET4 Everybody!
    往CImageList中加图标列表
    LoadIcon
    OnInitialUpdate 详解
    设备坐标(DP)、客户坐标(Client)、逻辑坐标(LP)
    Web及网络基础学习(一)
    Qt 下QMessageBox下中文乱码问题
    vs2005菜单:选项项目和解决方案
  • 原文地址:https://www.cnblogs.com/lshedward/p/10082997.html
Copyright © 2011-2022 走看看