2016-07-15 14 views
-2

Ich mache eine Klasse in Python und möchte ein Wörterbuch als Argument übergeben init und kopieren Sie es in eine Instanzvariable. So etwas wie das:Übergabe von Wörterbüchern an __init__

Aber aus irgendeinem Grund ist es nicht das Wörterbuch übergeben, vielleicht nur seine Art? Zum Beispiel, wenn ich print (Wörterbuch) in init versuche, druckt es nur "class 'dict'" anstelle des eigentlichen Wörterbuchs. Ich bin mir nicht sicher, warum das passiert, und ich würde jede Hilfe sehr schätzen!

+0

Sie etwas Kontext hinzufügen können von mit deiner Klasse? – Frodon

+1

Der Ausdruck ist Standardverhalten. Schauen Sie sich den print print an: https://docs.python.org/2/library/pprint.html – RvdK

+0

Sie haben uns nicht gezeigt, wie Sie Ihre Klasse instanziieren. Übrigens. Sie kopieren Ihre Klasse nicht. Sie weisen dem selben Wörterbuch nur den Namen 'self.copy' zu, wie er an Ihren Konstruktor übergeben wurde. Änderungen an "dictionary" werden zu "self.copy" propagiert. –

Antwort

1

Ich denke, Sie sind nicht eine dict Instanz im Konstruktor geben:

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

>>> f=foo({}) 
{} 
>>> f=foo({'key': 'value'}) 
{'key': 'value'} 
>>> f=foo(dict) 
<type 'dict'> 
0

funktioniert gut für mich

# foo.py 

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

dict_object = Foo({"mykey": "myvalue"}) 

Run it:

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

machen 'self.copy = dictionary' Anweisung ist in diesem Fall nutzlos tho. –

Verwandte Themen