小编典典

Python __str__ 与 __unicode__

all

__str__()当你应该实现vs时是否有 python
约定__unicode__()?我看到类覆盖__unicode__()的频率高于__str__()但它似乎并不一致。是否有具体的规则,什么时候实施一个比另一个更好?两者都有必要/良好的做法吗?


阅读 94

收藏
2022-06-11

共1个答案

小编典典

__str__()是旧方法——它返回字节。__unicode__()是新的首选方法——它返回字符。这些名称有点令人困惑,但在 2.x
中,出于兼容性原因,我们坚持使用它们。通常,您应该将所有字符串格式放入 中__unicode__(),并创建一个存根__str__()方法:

def __str__(self):
    return unicode(self).encode('utf-8')

在 3.0 中,str包含字符,因此将相同的方法命名为__bytes__()__str__()。这些行为符合预期。

2022-06-11