1. ホーム
  2. python

ValueError: 解凍する値が多すぎる (期待値 2)

2022-02-20 11:38:46
class Mymeta(type):
    def __new__(cls, class_name, class_bases, class_attrs):
        print('--->', cls) # ---> 

<クラス



        print('--->', class_name) # ---> Chinesisch
        print('--->', class_bases) # ---> (

<クラス

,)



        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
            sonst:
                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: zu viele Werte zum Auspacken (erwartet 2)

理由は、辞書はイテレータオブジェクトであること、次の説明を見つけるために公式文書を参照してください、辞書は、キー、値にしたい場合は、アイテムのメソッドを使用することができます、唯一のキーのトラバーサルをサポートしています。
辞書がサポートするquot;implicit"イテレーションは、キーに対するイテレーションのみです。

python はキーに対する反復処理しかサポートしていないので、 for k,v 形式を使用することはできません。
正しいコードは以下の通りです。

for key, value in class_attrs.items():

取得元:https://www.cnblogs.com/lshedward/p/10082997.html