对实例使用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__
.