Python __str__与__unicode__

有没有时,你应该实现一个python约定__str__()__unicode__()。我已经看到类重写的__unicode__()频率比更高,__str__()但似乎不一致。当实施一个相对于另一个更好时,是否有特定的规则?实施这两种方法是否必要/良好做法?



呼唤远方
浏览 328回答 3
3回答

吃鸡游戏

__str__()是旧方法-返回字节。__unicode__()是新的首选方法-它返回字符。名称有些混乱,但是在2.x中,出于兼容性原因,我们坚持使用它们。通常,您应该将所有字符串格式都放在中__unicode__(),并创建一个存根__str__()方法:def __str__(self):    return unicode(self).encode('utf-8')在3.0中,由于str包含字符,所以将__bytes__()和命名为相同的方法__str__()。这些行为符合预期。

MYYA

如果我不特别关心给定类的微优化字符串化,那么我将始终__unicode__只实施它,因为它更笼统。当我确实关心此类微小的性能问题(这是例外,不是规则)时,可能__str__只有(当我可以证明在字符串化输出中绝不会出现非ASCII字符时)或两者(当两者都有可能时)可能救命。我认为这些是牢固的原则,但实际上知道这是很常见的,只有ASCII字符而不花力气来证明它(例如,字符串形式只有数字,标点符号,并且可能是短的ASCII名称;-)在这种情况下,直接采用“公正__str__”方法是非常典型的做法(但是,如果我与一个编程团队合作过,为了避免这种情况,我建议我对该提议+1,因为在这些问题上很容易犯错,并且“过早的优化是编程中万恶之源” ;-)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python