В коде есть некоторые проблемы. Во-первых, установка значения true в log ничего не делает, так как тот же экземпляр var перезаписывается в той же строке. Я не говорю, что это образцово, но было бы немного яснее? Я попытался переписать его, чтобы было легче отслеживать состояние.
Также добавлены некоторые условные обозначения c (не проверяйте явно на None, если это действительно не нужно)
class Device():
def __init__(self, log = True, com_port=None, imei=None, ser=None, baud_rate=115200):
self.log_enabled = log
self.ser = ser
self.imei = imei
if log:
self.logger = Logger()
self.logger.start_log()
if not self.ser:
try:
self.ser = get_serial_port(baud_rate=baud_rate)
self.ser.write('at\r')
print(self.ser.read(1000))
except:
print('ERROR: serial port connection failed')
self.init_module()
Примечание что я хранил log
логическое значение отдельно до self.log_enabled
, чтобы его можно было проверить в коде, если ведение журнала включено. Хотя есть и лучшие варианты:
- Установить уровень ведения журнала при запуске, и вместо отключения ведения журнала установите его на
warning
или аналогичный, чтобы регистрировать только важные вещи - Вы также можете создать другой Null-логгер с интерфейсом, аналогичным Logger (), тогда вам не нужно будет использовать, если каждый раз
Но я бы go с уровнями журнала, тогда вы можете удалить первый if
- удаление условных выражений обычно является очень хорошим способом упростить код - и просто go с уровнями журнала.