Проверка типа Python с помощью Pyright –Python

Программы на Python
Ответить
Anonymous
 Проверка типа Python с помощью Pyright –

Сообщение Anonymous »

В приведенном ниже коде Pyright/Mypy будет жаловаться на строку «a.b.doSomeStuff()»:
«doSomeStuff» не является известным атрибутом «Нет»
Добавление проверки, что a.b не имеет значения None, конечно, решит эту проблему.
Но предположим, что существует множество похожих вызовов, и вы не хотите загромождать код этими «если» - это есть ли какой-нибудь изящный способ сообщить Pyright/Mypy, что create_a() гарантирует, что a.b не имеет значения None?
from typing import Optional

class B:
def __init__(self):
print("hello")

def doSomeStuff(self):
print("hello")

something: int = 1

class A:
def __init__(self):
print("Hello")

b: Optional = None

class C:
def __init__(self):
print("hello")

def create_a(self) -> A:
a = A()
a.b = B()
return a

class D:
def __init__(self):
print("hello")
c = C()
a = c.create_a()
a.b.doSomeStuff()


Подробнее здесь: https://stackoverflow.com/questions/791 ... th-pyright
Ответить

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

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

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

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

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