【问题标题】:Defining __repr__(self) to be created dynamically in python定义要在 python 中动态创建的 __repr__(self)
【发布时间】:2011-09-30 03:25:26
【问题描述】:

我有课

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

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

我想到了类似的东西:

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

有什么建议吗?谢谢!

【问题讨论】:

  • 信息不够具体。主观。你的选择。它会包含什么样的东西?
  • 问题是:为什么要使用动态属性?例如,您不能使用字典吗?在您的示例中,您可以有一个属性来存储字符串 '&lt;FooBar ...&gt;' 并在 repr 中执行 self.yourstring.format,但是,我认为您最好使用其他选项。

标签: python printing instance-variables


【解决方案1】:
>>> '<FooBar({!r})>'.format({'a':1, 'b':2})
"<FooBar({'a': 1, 'b': 2})>"

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

我认为

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

比参考.__dict__更好

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多