在继承unicode时访问unicode字符串的原始值

时间:2013-07-31 22:04:10

标签: python string python-2.7 subclass python-unicode

尝试获得一个类似的课程:

>>> original = u"ABCD-123-foo"
>>> suffix = SuffixComparingUnicodeString("foo")
>>> suffix == original    # if original ends with suffix, True
True

我知道这很愚蠢。请耐心等待。

无论如何,我无法弄清楚如何从str对象中获取实际的,呃,字符串(不是unicode,记住)。我可以这样做就好了:

>>> class SuffixComparingUnicodeString(unicode):
...     def __init__(self, x):
...          super(SuffixComparingUnicodeString, self).__init__(x)
...          self._myval = x
...     def __eq__(self, other):
...          return isinstance(other, unicode) and other.endswith(self._myval)
...
>>> SuffixComparingUnicodeString("foo") == u"barfoo"
True

如果不自行存储该值,我该怎么办呢? unicode将其基础字符序列称为什么?

1 个答案:

答案 0 :(得分:2)

由于您是子类unicodeSufficComparingUnicodeString的实例通常可以像任何其他Unicode字符串一样使用。因此,您可以在other.endswith(self)实施中使用__eq__()

class SuffixComparingUnicodeString(unicode):
    def __eq__(self, other):
        return isinstance(other, unicode) and other.endswith(self)