Я использую класс LineReceiver в библиотеке Twisted python. Я вижу из исходного кода LineReceiver, что mdethods setLineMode и setRawMode устанавливают переменную класса line_mode равным 1 или 0. Также существует другая переменная класса, называемая _buffer, которую я предполагаю хранить данные, отправленные по соединению.Переменные класса Python Twisted LineReceiver?
Но почему переменные класса line_mode и _buffer? Разве это не означает, что если моя фабрика создает несколько экземпляров LineReceiver (или протоколов, которые наследуют от LineReceiver), если я установил line_mode = 1, тогда все экземпляры протокола LineReceiver переходят в линейный режим? И разве это не означает, что для ВСЕХ экземпляров LineReceiver существует только один _буфер? Я не понимаю. Может ли кто-нибудь объяснить это?
Пока вы не попытаетесь изменить (присвоить) 'self.line_mode'; он относится к одному и тому же объекту для всех экземпляров класса, то есть Python не создает отдельные переменные экземпляра для атрибутов класса, именно так работает поиск атрибутов. Вы можете продемонстрировать это, используя изменяемый объект, такой как список как атрибут класса: если вы вызываете 'self.the_list.append (1)'; все остальные экземпляры будут видеть измененное значение (потому что это тот же объект). – jfs