【发布时间】:2013-04-19 23:21:53
【问题描述】:
鉴于这个简单的类:
class Foo(object):
def __init__(self,a=None):
self.a = a
def __repr__(self):
return "Foo(a='{self.a}')".format(self=self)
我想知道是否有一种简单的方法可以让 __repr__ 根据 a 的类型返回不同的格式:
Foo('some_string') # if a is a string
Foo(5) # if a is the integer 5
Foo(None) # if a is None
显然,对于单个属性,我可以测试并具有不同的输出字符串,但我认为肯定有人在我之前解决了这个问题。具体来说,我有几个属性可以是字符串或无,我认为为__repr__ 编写复杂的逻辑没有多大意义。
【问题讨论】:
-
感谢 Martijn 的快速解答!现在,有没有人有任何处理可选参数的“技巧”?我认为 Foo() 比 Foo(None) 漂亮得多...