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.stdout
。 str
通过首先检查 __str__
方法获取字符串表示,如果失败,则检查 __repr__
方法。你可以根据你的方便来实现它们以获得你想要的。
在您自己的情况下,实施
def __str__(self):
return self.__name
应该够了。
我有一个习惯 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.stdout
。 str
通过首先检查 __str__
方法获取字符串表示,如果失败,则检查 __repr__
方法。你可以根据你的方便来实现它们以获得你想要的。
在您自己的情况下,实施
def __str__(self):
return self.__name
应该够了。