Постарайтесь, чтобы получить класс, который будет работать следующим образом:Доступа исходного значения строки Юникода, когда подклассы Юникода
>>> 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
своей основной последовательностью символов?
Я сожалею, что ваш вопрос? Как получить не-юникодную версию строки, которую вы использовали для ее инициализации? – agf
'unicode' называет свою« основную строку »' self'. Это похоже на попытку получить «3» из объекта «3». Если вам нужен экземпляр 'unicode', вы можете использовать' unicode (self) '. – user2357112
@agf Я спрашиваю: если у вас есть 'myuni = unicode (" foo ")', то какой член 'unicode' использует, чтобы говорить о' u 'foo '' внутри экземпляра 'myuni'? Мне сложно сформулировать это, но я чувствую, что это довольно ясно, что я прошу иначе. – 2rs2ts