gpt4 book ai didi

python - 有没有办法在 python 中自动生成 __str__() 实现?

转载 作者:IT老高 更新时间:2023-10-28 21:18:33 56 4
gpt4 key购买 nike

厌倦了为我的类手动实现字符串表示,我想知道是否有一种 Python 的方法可以自动执行此操作。

我想要一个涵盖类的所有属性和类名的输出。这是一个例子:

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)

在使用 Project Lombok @ToString 后想到了这个问题在一些 Java 项目中。

最佳答案

您可以使用 vars 迭代实例属性, dir , ...:

def auto_str(cls):
def __str__(self):
return '%s(%s)' % (
type(self).__name__,
', '.join('%s=%s' % item for item in vars(self).items())
)
cls.__str__ = __str__
return cls

@auto_str
class Foo(object):
def __init__(self, value_1, value_2):
self.attribute_1 = value_1
self.attribute_2 = value_2

应用:

>>> str(Foo('bar', 'ping'))
'Foo(attribute_2=ping, attribute_1=bar)'

关于python - 有没有办法在 python 中自动生成 __str__() 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32910096/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com