Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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 将字典传递给_init___Python_Dictionary - Fatal编程技术网

Python 将字典传递给_init__

Python 将字典传递给_init__,python,dictionary,Python,Dictionary,我正在用Python创建一个类,希望将一个字典作为参数传递给init,并将其复制到一个实例变量。大概是这样的: class foo: def __init__(self, dictionary): self.copy = dictionary 但出于某种原因,它没有通过字典,也许只是它的类型?例如,当我尝试在init中打印(dictionary)时,它只打印“class'dict'”而不是实际的dictionary。不知道为什么会发生这种情况,我将非常感谢任何帮助 我

我正在用Python创建一个类,希望将一个字典作为参数传递给init,并将其复制到一个实例变量。大概是这样的:

class foo:
    def __init__(self, dictionary): 
        self.copy = dictionary

但出于某种原因,它没有通过字典,也许只是它的类型?例如,当我尝试在init中打印(dictionary)时,它只打印“class'dict'”而不是实际的dictionary。不知道为什么会发生这种情况,我将非常感谢任何帮助

我猜您没有在构造函数中给出dict实例:

class foo:
    def __init__(self, dictionary): 
        self.copy = dictionary
        print(dictionary)

>>> f=foo({})
{}
>>> f=foo({'key': 'value'})
{'key': 'value'}
>>> f=foo(dict)
<type 'dict'>
foo类:
定义初始化(self,字典):
self.copy=字典
印刷(字典)
>>>f=foo({})
{}
>>>f=foo({'key':'value'})
{'key':'value'}
>>>f=foo(dict)
对我来说很好

# foo.py

class Foo(object):
    def __init__(self, dictionary): 
        self.copy = dictionary
        print dictionary

dict_object = Foo({"mykey": "myvalue"})
运行它:

$ python foo.py
{'mykey': 'myvalue'}

您可以添加一些使用类的上下文吗?打印是默认行为。查找pretty print:您没有向我们展示如何实例化您的类。顺便说一句,你不是在复制你的课程。您只需将name
self.copy
分配给传递给构造函数的同一个字典。对
dictionary
的更改将传播到
self.copy
self.copy=dictionary
仅存储引用。如果你真的想要一份拷贝,你必须执行self.copy=dictionary.copy()
self.copy=dictionary
语句在这种情况下是无用的。