Python Glossary English

все Python 3codecsпонятие

codecs.Codec

базовые классы

Базовый класс кодека без состояния: методы encode и decode возвращают пару (результат, сколько поглощено). Наследуют при написании собственного кодека.

Синтаксис

class MyCodec(codecs.Codec):
    def encode(self, input, errors='strict'): ...

В прикладном коде этот класс не нужен: кодировать и декодировать — str.encode и bytes.decode. Методы базового класса бросают NotImplementedError. Контракт строгий: вернуть надо кортеж из двух элементов, и второй — длина обработанного ВХОДА, а не выхода. Чтобы кодек нашёлся по имени, его ещё надо зарегистрировать через codecs.register.

Примеры

import codecs
class Upper(codecs.Codec):
    def encode(self, text, errors='strict'):
        return text.upper().encode('ascii', errors), len(text)
    def decode(self, data, errors='strict'):
        return bytes(data).decode('ascii', errors), len(data)
print(Upper().encode('abc'))  # → (b'ABC', 3)

См. также

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