【发布时间】:2016-11-20 09:10:28
【问题描述】:
所以我有以下功能:
def find_by_name(self, name):
fitting_list = [p for p in self.__persons if name.lower() in p.name.lower()]
return fitting_list
当我想打印列表时,我得到以下输出:
[<src.store.domain.person.Person object at 0x000001F88705B128>]
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
你期待什么?
-
我希望打印关于 if 条件的对象列表。我已经实现了 str 方法。这还不够吗?
-
就是这样。它打印一个包含一个 Person 对象的列表。您会看到 Python 打印对象的默认方式。
-
顺便说一句,“persons”属性可能应该被称为
.persons,或者如果你想表明它是一个私有名称供你的类的方法使用并且代码外部的代码可能应该称为._persons类不应该直接接触它。以双下划线开头(最多以单下划线结尾)的名称会调用 Python 的 name mangling 机制,并且仅应在您真正需要它时使用。如果你不得不问“我需要在这里修改名字吗?”,你可能不需要。 ;)