尽管类中有_str_方法,但不能打印对象

时间:2016-07-09 01:30:34

标签: python python-2.7

我在_str_类中使用属​​性Booktitle定义了方法author

def _str_(self):
    book_line = "{title} by {author}".format(title=self.title, author=self.author)
    return book_line

现在,当我创建此类的实例(比如book1)时,为属性('title1''author1')分配值并尝试打印我的对象,Python无法返回book_line

相反,我得到了令人讨厌的输出<\_main\_.Book object at 0x02BC9A30>。另一方面,当我执行book1._str_()时,它会返回book_line

我做错了什么?

1 个答案:

答案 0 :(得分:2)

你需要两个下划线来表示&#34;魔法&#34;方法。它应该是:

def __str__(self):

     #stuff

它用于表示&#34;私人&#34; (或半私人)方法。

双下划线调用名称重整。通常用于防止覆盖子类中的方法。

如果你有一些课程Foo

class Foo:

   def __bar(self): pass

此方法为_Foo__bar

并且,魔术方法在方法名称的两个侧使用双下划线。