0

尝试获得一个可以像这样工作的课程:

>>> 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叫它的底层字符序列?

4

1 回答 1

2

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

class SuffixComparingUnicodeString(unicode):
    def __eq__(self, other):
        return isinstance(other, unicode) and other.endswith(self)
于 2013-07-31T22:12:47.233 回答