class A:
def __init__(self, message):
self.message = message
def __repr__(self):
return self.message
print A("Hello")
上面的代码打印出“Hello”,因为返回了一个字符串。 但我想默认返回一个列表。就像我写的那样:
class A:
def __init__(self, message):
self.message = message
def __repr__(self):
mylist = [self.message]
return mylist
print A("Hello")
以上代码报错TypeError: __str__ returned non-string (type list)
我无法创建类的对象,因为我需要将其作为异常处理。喜欢:
try:
#some code which passes parameters to constructor of A if this fails.
except A as e:
#here I want e as a list instead of string.
有什么方法可以返回列表吗?
请您参考如下方法:
__str__和 __repr__方法必须返回字符串。您必须创建一个自定义的 getter 函数。
例如:
class A:
def __init__(self, message):
self.message = message
def get_message_as_list(self):
return [self.message]
my_object = A("Hello")
print(my_object.get_message_as_list())
正如 jonrsharpe 所说,您不能真正为此使用魔术(双下划线)方法。
