Python表示class的魔术方法?

Python's Magic Method for representation of class?

我有一个习惯 class 比如:

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()

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

您需要实施__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

您需要重写 __str__() 方法,如下所示:

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

n = b()

print n
hello

有两种相关的方法。 __str__ 方法将您的对象 "coverts" 转换为字符串。然后有一个 __repr__ 方法将您的对象转换为 "programmer representation"。 print 函数(或语句,如果您使用 Python 2),使用 str 函数将对象转换为字符串,然后将其写入 sys.stdoutstr 通过首先检查 __str__ 方法获取字符串表示,如果失败,则检查 __repr__ 方法。你可以根据你的方便来实现它们以获得你想要的。

在您自己的情况下,实施

def __str__(self):
   return self.__name

应该够了。