定义 __repr__(self) 在 python 中动态创建

发布于 2024-11-18 23:36:16 字数 386 浏览 2 评论 0原文

我有一个类

class FooBar(object):
    def __repr__(self):
        pass

,我想实现 __repr__ 函数。由于我使用 FooBar 作为一种方便的容器,并且动态添加一些属性,因此我也考虑动态生成 __repr__ 。 (如果这是不好的实践,请解释并启发我:-))

我想到了类似的事情:

def __repr__(self):
    return '<FooBar({WHAT IS ELEGANT AND GOES HERE?})>'.format(**self.__dict__)

有什么建议吗?谢谢!

I have a class

class FooBar(object):
    def __repr__(self):
        pass

and I want to implement the __repr__ function. Since I am using FooBar as sort of a handy container and I add some attributes dynamically I thought of generating __repr__ dynamically, too. (If this is bad praxis, please explain and enlighten me :-))

I thought of something like:

def __repr__(self):
    return '<FooBar({WHAT IS ELEGANT AND GOES HERE?})>'.format(**self.__dict__)

Any suggestions? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦在深巷 2024-11-25 23:36:16
>>> '<FooBar({!r})>'.format({'a':1, 'b':2})
"<FooBar({'a': 1, 'b': 2})>"

在Python2.6上,你必须使用 {0!r}

我认为

'<FooBar({!r})>'.format(vars(self))

比引用 .__dict__ 更好

>>> '<FooBar({!r})>'.format({'a':1, 'b':2})
"<FooBar({'a': 1, 'b': 2})>"

on Python2.6 you'd have to use {0!r}

I think

'<FooBar({!r})>'.format(vars(self))

is nicer than referring to .__dict__

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文