python - 为属性提供自定义 __str__ 表示

标签 python python-3.x

我对为 Python 中的类提供 __str__ 的想法很感兴趣,但是,特别是现在数据类已经成为一种东西,我发现需要定义 __str__ 用于类的属性。这是一个极其人为的示例:

class Example():
    what = ['t', 'e', 's', 't']

    def __init__(self, is_test=True):
        self.is_test = is_test

    def __str__(self):
        if self.is_test:
            return f'This is just a {"".join(self.what)}'
        return f'This is not a {"".join(self.what)}'

    def print_what(self):
        return "".join(self.what)

a = Example()

> print(a)
This is just a test

> print(a.print_what())
test   

> print(a.what)
['t', 'e', 's', 't']

我想要做的是遵循类中 what 属性的相同 __str__ 模式,以便 print(a.what)将显示 test 而不是 ['t', 'e', 's', 't']。是否可以为属性提供 __str__ 表示形式?也许用装饰器之类的东西?

最佳答案

在这种情况下您可能想要使用属性。 例如:

class Example:
    _data = ['t','e','s','t']

    @property
    def data(self):
        return "".join(self._data)



a = Example()

> print(a.data)
test

关于python - 为属性提供自定义 __str__ 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58203538/

相关文章:

python - 如何动态更改下拉值

python - 如何在 ubuntu-12.04 中设置 cairo 的路径?

python - 强制对可迭代对象进行所有迭代

Python Pandas 添加 DataRow 修订号

python - 如何制作BeautifulSoup "understand"plus html实体

Python 和 MySQL : Matching element from list of with a record from database

python - importError : no module named pysphere

python - 从数组中删除子数组

python - 从图中删除节点或重置整个默认图

python - 如何使用Python定义二维数组划分的节号?