Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;I don’我没有按预期工作_Python_Python 3.x_Class_For Loop - Fatal编程技术网

Python 我的uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;I don’我没有按预期工作

Python 我的uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;I don’我没有按预期工作,python,python-3.x,class,for-loop,Python,Python 3.x,Class,For Loop,当我运行此代码时,我得到: class DictionnaireOrdonne: """Classe permettant de créer un dictionnaire ordonné comme une liste, avec des indices""" def __init__(self, **keys_values): """classe prennent un nombre indéfinit de paramètr

当我运行此代码时,我得到:

    class DictionnaireOrdonne:
        """Classe permettant de créer un dictionnaire ordonné comme une liste, avec des indices"""

        def __init__(self, **keys_values):
            """classe prennent un nombre indéfinit de paramètres nommées"""

            self.keys_values = keys_values
            self._dictionnaire = self.keys_values
            for keys in self.keys_values:
                self.keys = keys

        def __repr__(self):
            """Cette méthode est appelée quand on appelle l'objet"""

            return str(self.keys_values)

        def __getitem__(self, key):
            """Cette méthode spéciale est appelée quand on fait objet[index]
                    Elle redirige vers self._dictionnaire[index]"""

            return self._dictionnaire[key]

        def __setitem__(self, key, value):
            """Cette méthode est appelée quand on écrit objet[index] = valeur
                    On redirige vers self._dictionnaire[index] = valeur"""

            self._dictionnaire[key] = value


test = DictionnaireOrdonne(one=1, two=2, three=3)
print(test.keys)
我只有三把钥匙中的一把,这是最后一把,我不知道为什么

但是,如果我将for循环修改为:

three
然后我得到:

for keys in self.keys_values:
        print(keys)
我得到了想要的输出,但我不能使用它,因为它会自动打印而不需要我调用它


在我的第一个示例中,为什么我只得到一个键,如何使它在调用
test.keys
时得到三个键?

\uuu init\uuu
中更改下面的代码:

one
two
three
致:


仔细查看您试图让for循环执行的操作:

对于self.keys\u值中的键:
self.keys=键
您没有添加到列表或任何类似的内容,而是用
keys\u values
中的最新对象替换
keys

坦白地说,这里实际上根本不需要for循环。只需将
self.keys
设置为
self.keys\u值
,它就会按照您的意愿工作

编辑:

要将
**键\u值
转换为键列表,请使用
list()

self.keys=list(self.keys_values.keys())#将键转换为列表
#后来
打印(按键)#[“一”、“二”、“三”]

您没有添加到密钥列表;您只需使用当前密钥覆盖前面的每个密钥。也就是说,如果您将关键字参数存储在
self.key\u values
中,那么将它们再次存储在
self.dictionnaire
或冗余存储关键字没有什么价值。您好,谢谢。如果我将
self.keys
设置为
self.keys\u值
,然后调用
test.keys
,我将在只需要密钥时同时获取密钥和值。我不能使用for循环或其他方法捕获我所有的键吗?哦,好吧,简单地说
list(self.keys\u values.keys)
。它将把你所有的钥匙(一、二、三)都放在一个列表中。
for keys in self.keys_values:
    self.keys = keys
self.keys = self.keys_values