手动编写类的字符串表示方法让我感到疲惫不堪,我想知道是否有一种Pythonic的方法可以自动化实现。
我希望输出包含类的所有属性和类名。以下是一个示例:
class Foo(object):
attribute_1 = None
attribute_2 = None
def __init__(self, value_1, value_2):
self.attribute_1 = value_1
self.attribute_2 = value_2
结果为:
bar = Foo("baz", "ping")
print(str(bar)) # desired: Foo(attribute_1=baz, attribute_2=ping)
在一些Java项目中使用Project Lombok的@ToString后,我想到了这个问题。
__str__
,它会转发到__repr__
。__repr__
也有一个默认的实现方式,其中提到了type(my_object)
和id(my_object)
的结果。如果你想使用其他默认值,你可以 a) 使用继承,b) 编写自己的类装饰器,或者 c) 在类体中分配__str__
给一些现有的函数(通过执行__str__ = something
而不是def __str__(self)
)。 - lvc