如何根据模块中可能可用或不可用的类型(取决于操作系统)在 Python 中注释变量?

问题描述 投票:0回答:1

假设开发了一个应在 Windows 和 Linux 上运行的应用程序,并且该应用程序使用 pyserial 包,该包在 Linux 中安装时提供类型

serial.serialposix.Serial
,在 Windows 中安装时提供类型
serial.serialwin32.Serial
。是否可以注释变量类型,以便 linter 根据操作系统知道使用哪种类型?

import serial
serial_port: serial.serialposix.Serial = serial.Serial('/dev/ttyUSB0') # the linter complaints on Windows
serial_port: serial.serialwin32.Serial = serial.Serial('COM1') # the linter complaints on Linux
serial_port: serial.serialposix.Serial | serial.serialwin32.Serial = serial.Serial(f"{name}") # the linter complaints on Windows and on Linux
python annotations typing
1个回答
0
投票

您可以使用基类

serial.serialutil.SerialBase
。 大多数方法都是从该类继承的。

from serial import SerialBase
serial_port: SerialBase = serial.Serial('/dev/ttyUSB0')
serial_port: SerialBase = serial.Serial('COM1') 
© www.soinside.com 2019 - 2024. All rights reserved.