我有一个自定义类,如:
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()
这样做的神奇方法是什么?
答案 0 :(得分:3)
有两种方法是相关的。有__str__
方法"转换"你的对象变成了一个字符串然后有一个__repr__
方法将您的对象转换为"程序员表示"。 print
函数(或者如果您正在使用Python 2的语句)使用str
函数将对象转换为字符串,然后将其写入sys.stdout
。 str
首先检查__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