Mypy – несовместимые типы при назначении при назначении разных значений в альтернативных ветвяхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Mypy – несовместимые типы при назначении при назначении разных значений в альтернативных ветвях

Сообщение Anonymous »

Мне интересно, почему я получаю здесь несовместимые типы при назначении?
from typing import cast

import pyvisa
from pyvisa.constants import InterfaceType
from pyvisa.resources import GPIBInstrument, TCPIPInstrument

class Instrument:
resource_manager = pyvisa.ResourceManager()

def __init__(self, resource: str):
self.resource = self.resource_manager.open_resource(resource_name=resource)
if self.resource.interface_type == InterfaceType.tcpip:
self.instance: TCPIPInstrument = cast(TCPIPInstrument, resource)
elif self.resource.interface_type == InterfaceType.gpib:
self.instance: GPIBInstrument = cast(GPIBInstrument, resource)
else:
raise TypeError(f"Unsupported resource interface type: {self.resource.interface_type}")


При присваивании выдает несовместимые типы (выражение имеет тип «GPIBInstrument», переменная имеет тип «TCPIPInstrument»)
self.instance правильно получает экземпляр типа: TCPIPInstrument | GPIBInstrument в vscode.
Я использую Python 3.11.3 и mypy 1.2.0.
Ссылка на суть с тем же проблема, но с немного другим кодом, так как мне не удалось установить pyvisa на игровой площадке.
Обнаружил некоторые проблемы в коде из комментариев, вот более правильный код, но все же с та же проблема.
from typing import cast

import pyvisa
from pyvisa.constants import InterfaceType
from pyvisa.resources import GPIBInstrument, TCPIPInstrument

class Instrument:
resource_manager = pyvisa.ResourceManager()

def __init__(self, resource_name: str):
self.resource = self.resource_manager.open_resource(resource_name=resource_name)
if self.resource.interface_type == InterfaceType.tcpip:
self.instance = cast(TCPIPInstrument, self.resource)
elif self.resource.interface_type == InterfaceType.gpib:
self.instance = cast(GPIBInstrument, self.resource)
else:
raise TypeError(f"Unsupported resource interface type: {self.resource.interface_type}")


Подробнее здесь: https://stackoverflow.com/questions/760 ... s-in-alter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»