0

我被迫使用的 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 版本并没有这样做。

4

1 回答 1

2

正确的方法是解码为 Unicode。self.decode(some_encoding).

字节字符串可以是任何编码。如果您总是使用 ASCII,则将其用作您的编解码器:

return self.decode('ASCII')
于 2013-07-12T11:01:21.790 回答