استدعاء str على قاموس الكائنات
سؤال
لدي قاموس لأشياء مثل ذلك{'name1':oject_instance_1,'name2':oject_instance_2,'name3':oject_instance_3}
في تعريف فئتي للكائن، قمت بتعريف كل من __str__() method
و ال __repr__()
الطريقة على النحو التالي:
def __str__(self):
return('{0} pathway containing {1} genes, with a total sequence length of {2}'.format(self.id, len(self.genes), self.length))
def __repr(self):
return self.__str__
إذا كان من المهم أن يكون self.id عبارة عن سلسلة، فإن self.genes عبارة عن قائمة، وself.length عبارة عن int
المشكلة هي عندما أذهب لطباعة هذا القاموس أحصل على:
{'pid1003': <Pathway.Pathway instance at 0x10169d680>, 'pid1002': <Pathway.Pathway instance at 0x10169d638>, 'pid1001': <Pathway.Pathway instance at 0x10169d5f0>}
ولكن الطباعة في حلقة مثل
for v in dict.values():
print(v)
يعمل بشكل جيد.
أي أفكار لماذا؟شكرًا!
المحلول
ربما يجب عليك التنفيذ __repr__
, ، لا __repr
.
يحرر:
و __repr__
يجب أن يُرجع سلسلة، وليس دالة.لذلك، كما هو مذكور في التعليقات، العودة str(self)
.
لا تنتمي إلى StackOverflow