Python Glossary English

Python 3.0+collectionsпонятие

collections.UserString

обёртки типов

Обёртка над str с содержимым в атрибуте .data; удобна для создания собственных строковых классов наследованием.

Синтаксис

class MyStr(collections.UserString): ...

Отличие от наследования от str: у подкласса str методы upper(), strip() и срезы возвращают обычную строку, и ваш класс теряется после первой же операции, а UserString каждый раз пересобирает результат как self.__class__ из .data. Цена та же, что у остальных User*-обёрток: isinstance(s, str) даёт False и всё работает через лишний слой, поэтому наружу удобнее отдавать str(s).

Примеры

from collections import UserString
s = UserString('ab')
print(s.upper(), len(s))   # → AB 2
print(s.data, type(s.data).__name__)   # → ab str
print(s == 'ab', isinstance(s, str))   # → True False
print(s + 'c', type(s + 'c').__name__)   # → abc UserString

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности