Я хочу использовать несколько общих протоколов и убедиться, что они совместимы: from typing import TypeVar, Protocol, Generic from dataclasses import dataclass # checking fails as below and with contravariant=True or covariant=True: A = TypeVar("A") class C(Protocol[A]): def f(self, a: A) -> ....
5 Май 2021 в 18:14
Есть ли какая-нибудь концепция, в которой я могу комбинировать дженерики и описывать отношения между классами и экземплярами этого класса? Немного надуманный пример, но он передает мою точку зрения: ManagedClass = TypeVar("ManagedClass") class MyClass1: def my_method(self): ... def inst....
3 Май 2021 в 03:00
Предположим, что был создан абстрактный базовый класс MembershipClass. Несколько классов являются производными от абстрактного базового класса, например FirstClass, SecondClass и т. Д. Я хочу использовать аннотации типов в функции, которая принимает в качестве аргумента любой класс, производный от ....
1 Май 2021 в 22:17
Давайте принимать: class A: pass class A2(A): @property def f(self): return None class B: def __init__(el: A) self._a = el class B2(B): def __init__(el: A2) super().__init__(el) def m(): self._a.f() Теперь у меня есть опечатка в последней ....
29 Апр 2021 в 13:00
Рассмотрим следующее MWE: import hashlib def tstfun(h: hashlib._hashlib.HASH): print(h) h = hashlib.md5() tstfun(h) # reveal_type(h) Запуск этого результата как есть - неудивительно: $ python mypytest.py <md5 _hashlib.HASH object @ 0x7fa645dedd90> Но проверка этого с помощью mypy не удает....
22 Апр 2021 в 09:24
В приведенном ниже коде print_pos принимает один аргумент, который может иметь три разных типа. from typing import List, Tuple, Union pos_t = Tuple[int, int] anchor_t = Tuple[str, str] anchor_pos_t = Tuple[anchor_t, pos_t] def print_pos( pos: Union[ pos_t, anchor_p....
20 Апр 2021 в 23:09
Я хочу написать функцию Python, которая принимает в качестве входных данных объекты Callable и соответствующие аргументы и возвращает сопоставление объектов Callable со значениями этих объектов в аргументах. Более конкретно, код может выглядеть примерно так. >>> import collections >>> import datacl....
15 Апр 2021 в 04:58
Я обычно использую функции unittest.mock.Mock wraps для создания полнофункциональных шпионских объектов. Вот пример, который отлично работает при запуске: from threading import Event from typing import Union from unittest.mock import Mock spy_event: Union[Mock, Event] = Mock(wraps=Event()) spy_eve....
14 Апр 2021 в 20:45
Поэтому мне нужно принудительно указать тип переменной класса, но, что более важно, мне нужно принудительно указать список с ее типами. Итак, если у меня есть код, который выглядит так: class foo: def __init__(self, value: list[int]): self.value = value Кстати, я использую Python верси....
13 Апр 2021 в 21:43
Предлог: этот код бесполезен, и вариант использования также может оказаться бесполезным, но я просто пытаюсь понять, как заставить его работать, чтобы файлы-заглушки отображали правильные подписи. Вопрос кажется запутанным, поэтому я изо всех сил стараюсь объяснить, но я очень открыт для предложени....
13 Апр 2021 в 19:47
Я использую подсказки типа Python и mypy со следующим кодом: от ввода import Необязательно def compute (use_wcog: bool = False, Xt: Необязательно [float] = Нет, Xd: Необязательно [float] = Нет, .......
8 Апр 2021 в 19:54
Я пытаюсь заставить PyCharm понять, что подкласс моего базового класса контроллера принимает только определенный тип виджета. Минимальный пример: import tkinter as tk class BaseWidgetController: def __init__(self, parent: 'tk.Widget'): # Parent is always __some__ kind of widget self._p....
3 Апр 2021 в 15:43
У меня есть такое определение в моем коде на Python: options = defaultdict (lambda: defaultdict (lambda: defaultdict (str))) options ['modem1'] ['ByCost'] = ... options ['modem1'] ['ByCarrier' ] = ... параметры ['modem1'] ['.......
30 Мар 2021 в 19:49
Я пытаюсь определить функцию, которая должна возвращать Optional [Foo], если условие соответствует, но None, если оно не совпадает. Но я не могу понять, как создать экземпляр необязательного: def find_user (self, id: .......
23 Мар 2021 в 05:54
Я использую mpi4py для распараллеливания своего кода, у меня есть такая функция: def do_something(some_integer: int, comm) -> None: ... Аргумент comm предназначен для коммуникатора mpi, как показано ниже: from mpi4py import MPI comm = MPI.COMM_WORLD Я хочу использовать явную типизацию для свои....
22 Мар 2021 в 17:35
В последних документах по типизации содержится множество предупреждений об устаревании, например: class typing.Deque (deque, MutableSequence [T]) Общая версия collections.deque. Новое в версии 3.5.4. Новое в версии .......
22 Мар 2021 в 02:46
У меня есть метод приложения, который использует декоратор @typeguard.typechecked для выполнения проверок переданных параметров во время выполнения: class SalesDeal: pass @typechecked def do_something(deal: SalesDeal): pass Внутри теста у меня есть поддельный класс FakeSalesDeal, который ре....
16 Мар 2021 в 14:43
Скажем, у меня есть функция do_something: от ввода import * def do_something (аргумент: Sequence [Tuple [int, str]]): pass Скажем, у меня также есть словарь D, ключи которого являются исключительно int, и .. .....
16 Мар 2021 в 00:27
У меня есть модуль Python, в котором есть несколько простых перечислений, которые определены следующим образом: class WordType(Enum): ADJ = "Adjective" ADV = "Adverb" class Number(Enum): S = "Singular" P = "Plural" Поскольку таких перечислений много, и я решаю только во время выпол....
14 Мар 2021 в 00:46
ИЗМЕНИТЬ ПРИМЕЧАНИЕ 1 . К настоящему времени я нашел PEP 612, который решает эту проблему - начиная с Python 3.10 - путем введения typing.ParamSpec. Итак, этот вопрос касается конкретно Python 3.9 или более ранней версии. РЕДАКТИРОВАТЬ ПРИМЕЧАНИЕ 2 : исходный пример был слишком узким, поскольку в....
Я пытаюсь сделать это в основном: @dataclass class A: pass @dataclass class B(A): pass @dataclass class container: stuff: List[A OR B OR any future defined child class] Единственный способ, который я нашел, посмотрев здесь и на страницу PEP484, кажется, выглядит примерно так ... за искл....
9 Мар 2021 в 02:00
Проблема: Я хочу использовать аннотацию типа для collections.deque, но поскольку мы должны поддерживать старую версию python (3.4 и 3.5, если быть точным - и не имеет значения, что они не официально поддерживаются ), Я хочу, чтобы мой код был действителен во всех версиях Python, которые мы должны....
26 Фев 2021 в 19:14
Я хотел бы определить общий тип. Что-то вроде: T = TypeVar ('T') RecurSeqOf = Sequence [Union [Generic [T], Sequence [T]]]] # mypy error: переменная "typing.Generic" недопустима как тип Is .......
25 Фев 2021 в 09:20
У меня есть такой пример. от ввода import Union, TypeVar, Dict, Sequence IdentifierSymbol = TypeVar ("IdentifierSymbol", str, int) def f (ids: Sequence [IdentifierSymbol]) -> Dict [.......
24 Фев 2021 в 13:50
Я создаю класс данных в 3.8.8 для хранения результата вызова REST API, и один из его атрибутов используется для хранения статуса ответа HTTP: из классов данных импорт класса данных из http import HTTPStatus @ .......