Конечно, идти вперед и переопределить его.Вы можете либо создать подкласс Serial
и указать метод бездействия __del__()
и использовать этот подкласс вместо Serial
, либо удалить этот метод из фактического класса Serial
(monkey-patching), используя del
заявление.Первый метод предпочтительнее, но второй может быть необходим, если код, который вы не можете контролировать, использует последовательный порт.Убедитесь, что метод __del__()
не делает ничего более важного, прежде чем его переопределить, конечно.
Подклассы:
import serial
class mySerial(serial.Serial):
def __del__(self):
pass
ser = mySerial()
# rest of script the same
Исправление обезьян:
import serial
del serial.Serial.__del__
Если у вас есть исходный код Python для этого модуля (т. Е. Он не написан на C), третьим подходом было бы создать свою собственную копию и просто отредактировать ее, чтобы этого не делать.(Вы также можете сделать это для модулей C, но запустить его немного сложнее, если у вас нет опыта работы с C.)
Конечно, изменение метода __del__()
, чтобы он не вызывал ser.close()
мало поможет в коде, который вы даете, так как вы сами звоните ser.close()
.: -)