我被迫使用的 sqlobject 版本__unicode__
在自定义类似字符串的类型上具有魔力,我正在尝试继承表单字符串并满足该要求:
class Foo(str):
extra_attribute = 42
def __repr__(self):
return repr(self) # optional
def __unicode__(self):
return unicode(self) # infinite recursion
return super(Foo, self).__unicode__() # str doesn't have __unicode__
return unicode(str(self)) # an ugly hack, but works
最后一行是我能做的最好的,还是有更清洁的方法?
在 Python 2.x 中转换类 unicode 对象的正确方法显然是:
return unicode(x)
或者,更详细地说:
if hasattr(x, "__unicode__"):
return x.__unicode__()
else:
return unicode(x)
不幸的是,我必须使用的 sqlobject 版本并没有这样做。