Форум сайта python.su
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:26)
Офлайн
Начните с PEP8 .
Уберите поле __author__ для чего оно?
Каждый импорт в свой отдельной строчке.
Вместо ‘+’ и “типа констант” используете метод format.
Где докстринги ?
Где тесты?
Зачем тут нужна имитация приватных данных и методов с ‘_’ ?
Какую смысловую нагрузку имеет метод encoding c декоратором @property если свойство класса encoding в классе не изменяется? Возможно и с другими методами также, дальше не смотрел.
Офлайн
AlenПросмотр кодировки, которая устанавливается при создании экземпляра.
Какую смысловую нагрузку имеет метод encoding c декоратором @property если свойство класса encoding в классе не изменяется?
>>> f = open('/etc/passwd') >>> f.encoding 'UTF-8' >>> f.encoding = 'x' Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: readonly attribute >>>
AlenЭто не приватные методы, а вспомогательные (служебные). Просто, чтобы они в документацию (help) не попадали, у них ставится подчёркивание.
Зачем тут нужна имитация приватных данных и методов с ‘_’ ?
AlenУ байтовых объектов нет метода .format()
Вместо ‘+’ и “типа констант” используете метод format.
>>> b''.format Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'bytes' object has no attribute 'format' >>>
tz4678@gmail.comВот так делать, конечно, не надо - мало ли, что там ещё может быть. Меняй либо через .translate()s.replace('\n', '%0A').replace('\r', '%0D').replace('"', '%22')))
>>> '\r\n"'.translate(str.maketrans({'\r': '%0D', '\n': '%0A', '"': '%22'})) '%0D%0A%22' >>>
>>> import re >>> >>> s = 'abc\r\r\n\ndef"' >>> >>> re.sub(r'[\r\n"]', lambda mo: '%{:02X}'.format(ord(mo.group())), s) 'abc%0D%0D%0A%0Adef%22' >>>
Отредактировано py.user.next (Март 11, 2015 22:16:51)
Офлайн
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:28)
Офлайн
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:29)
Офлайн
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:30)
Офлайн
py.user.next
Просмотр кодировки, которая устанавливается при создании экземпляра.
class A: def __init__(self, encoding='utf-8'): self.encoding = encoding class B: def __init__(self, encoding='utf-8'): self._encoding = encoding @property def encoding(self): return self._encoding a = A() a.encoding 'utf-8' b = B() b.encoding 'utf-8' c = A('koi8-r') c.encoding 'koi8-r'
py.user.next
Это не приватные методы, а вспомогательные (служебные). Просто, чтобы они в документацию (help) не попадали, у них ставится подчёркивание.
py.user.next
байтовых объектов нет метода .format()
Отредактировано Alen (Март 12, 2015 07:44:58)
Офлайн
AlenНо таким образом его и задать можно. ТС сделал свойство только для чтения, чтобы предотвратить изменение кодировки после инициализации класса.
её и так можно посмотреть без метода
Офлайн
FishHook
Но таким образом его и задать можно. ТС сделал свойство только для чтения, чтобы предотвратить изменение кодировки после инициализации класса.
Офлайн
AlenТак нельзя смотреть. Происходит привязка программы к внутреннему содержимому объекта. Это что-то вроде глобальных переменных - то есть на первый взгляд выглядит удобным, но делать так нельзя.
её и так можно посмотреть без метода:
AlenЕсли это свойство, то оно и должно попасть, так как свойство предназначено для использования объекта снаружи .
Пример без подчеркивания выше, таки ‘encoding’ и так и так в документацию попадет
AlenСвойства - часть интерфейса объекта. Каким бы ни было его содержимое, свойства гарантируют определённое поведение.
всё дело в размере кода и его читаемости
AlenВидимо, чтобы не перекодировать их лишний раз из юникода в ascii.
А зачем они байтовые?
Отредактировано py.user.next (Март 12, 2015 09:40:46)
Офлайн