对实例使用unicode()时调用。unicode()与str()的区别在于: 前者返回值是unicode, 后者返回值是str。unicode和str都是basestring的子类。
当你对一个类只定义了__str__但没定义__unicode__时,__unicode__会根据__str__的返回值自动实现,即return unicode(self.__str__());
但反过来则不成立。
class StrDemo2:
def __str__(self):
return 'StrDemo2'
class StrDemo3:
def __unicode__(self):
return u'StrDemo3'
demo2 = StrDemo2()
print str(demo2) # StrDemo2
print unicode(demo2) # StrDemo2
demo3 = StrDemo3()
print str(demo3) # <__main__.StrDemo3 instance>
print unicode(demo3) # StrDemo3
Python3中,str与unicode的区别被废除了,因而__unicode__没有了,取而代之地出现了__bytes__.
本文探讨了Python中Unicode与Str的区别,特别是针对__str__和__unicode__方法的使用方式,以及它们如何影响类实例的字符串表示形式。在Python 3中,这些概念已经发生了变化,文章也对此进行了说明。

628

被折叠的 条评论
为什么被折叠?



