用于表示类的Python的Magic方法?

时间:2015-05-19 06:53:11

标签: python magic-methods

我有一个自定义类,如:

class foo(object):
    def __init__(self, name):
        self.__name = name

    def get_name(self):
         return self.__name

我想做的是写

  test = foo("test")
  print test

而不是

 test = foo("test")
 print test.get_name()

这样做的神奇方法是什么?

3 个答案:

答案 0 :(得分:3)

有两种方法是相关的。有__str__方法"转换"你的对象变成了一个字符串然后有一个__repr__方法将您的对象转换为"程序员表示"。 print函数(或者如果您正在使用Python 2的语句)使用str函数将对象转换为字符串,然后将其写入sys.stdoutstr首先检查__str__方法获取字符串表示,如果失败,则__repr__方法。您可以根据自己的方便实施它们,以获得您想要的效果。

在您自己的情况下,实施

def __str__(self):
   return self.__name

应该足够了。

答案 1 :(得分:1)

您需要实施__str__

class foo(object):
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name

    def __str__(self):
        return self.get_name()

f = foo("My name")

print f

答案 2 :(得分:1)

您需要覆盖__str__()这样的方法:

class b:
     def __str__(self)
             return "hello"

n = b()

print n
hello