Ich habe ein wenig Probleme zu überprüfen, ob Vars (Objekt) vom Typ Wörterbuch ist. Wenn es nicht vom Typ Wörterbuch ist, als wird es einen Fehler zu tun Vars (Objekt) werfen:Wie überprüft man, ob Vars (Objekt) vom Typ Wörterbuch ist?
if type(vars(vars(self.j)['element'])) is dict: # exception gets thrown here if not a dictionary
'this is a dictionary'
Sie können nicht Typen (VARs (Objekt)), wenn Vars (Objekt) kein Wörterbuch verwenden. Wie überprüft man, ob Vars (Objekt) ein Dikton ist?
edit: in Reaktion auf die Antwort unter:
print type(vars(self.j)['element'])
print isinstance(vars(vars(self.j)['element']), dict) # this is a dict
print type(vars(self.j)['beverage'])
print isinstance(vars(vars(self.j)['beverage']), dict) # exception thrown because its not a dictionary
Ausgang:
<class '__main__.Element2'>
True
<type 'str'>
print isinstance(vars(vars(self.j)['beverage']), dict)
TypeError: vars() argument must have __dict__ attribute
edit: als Antwort auf bruno, möchte ich so etwas wie dies zu tun:
def are_elements_equal(self, first_element, second_element, msg=None):
for i in vars(first_element).keys():
if type(vars(vars(first_element)[i])) is dict:
self.are_elements_equal(vars(first_element)[i], vars(second_element)[i])
else:
self.assertEqual(vars(first_element)[i], vars(second_element)[i])
Überprüfen Sie die Bearbeitung. Ich habe versucht, Ihre Frage zu beantworten, warum ich Vars (Vars (Obj)) verwenden möchte – BUInvent
Hier ist mein voller Code, wenn Sie es sehen wollen: http://www.codesend.com/view/9515db7496c9b3d36fd49231a5684f08/ – BUInvent