from typing import TypeVar, Generic
T = TypeVar("T", ...?) # an actual int value, not int type, as typevar, I'm wondering how to write such type var
V = TypeVar("V", ...?) # an actual int value, not int type, as typevar
class Foo(Generic[T, V]):
def __init__(self, t: T, v: V) -> None:
self.T, self.V = t, v
def __call__(self, x: np.ndarray[tuple[T, V], np.dtype[np.float_]]):
return x
# e.g.
foo = Foo(3, 2) # foo is expected to type-hint as Foo[3, 2] or Foo[Literal[3], Literal[2]]
y = foo(np.zeors(3, 2)) # foo(...) is expected to hint a parameter type of np.ndarray[tuple[Literal[3], Literal[2]], np.dtype[np.float_]]
Итак, как мне настроить typevar s, чтобы получить то, что я хочу?
Чтобы быть коротким, я надеюсь написать что-то вроде шаблона < /code> of c ++ в python. Вот конкретный пример < /p> [code]from typing import TypeVar, Generic T = TypeVar("T", ...?) # an actual int value, not int type, as typevar, I'm wondering how to write such type var V = TypeVar("V", ...?) # an actual int value, not int type, as typevar class Foo(Generic[T, V]): def __init__(self, t: T, v: V) -> None: self.T, self.V = t, v
def __call__(self, x: np.ndarray[tuple[T, V], np.dtype[np.float_]]): return x
# e.g. foo = Foo(3, 2) # foo is expected to type-hint as Foo[3, 2] or Foo[Literal[3], Literal[2]] y = foo(np.zeors(3, 2)) # foo(...) is expected to hint a parameter type of np.ndarray[tuple[Literal[3], Literal[2]], np.dtype[np.float_]] [/code] Итак, как мне настроить typevar s, чтобы получить то, что я хочу?
Чтобы быть коротким, я надеюсь написать что-то вроде шаблона of c ++ в python.
Вот конкретный пример
from typing import TypeVar, Generic
T = TypeVar( T , ...?) # an actual int value, not int type, as typevar, I'm wondering how to write such type...
Независимо от того, хорошая это идея или нет, разрешено ли в C++ иметь две шаблонные функции, которые отличаются только типом нетипового параметра шаблона.
Я задаю этот вопрос, потому что MSVC и GCC/Clang ведут себя в этом отношении по-разному.
У...
Я давно думал, что странно, что MSVC использует __int64 в качестве имени для типа Long Long во всех своих диагностических сообщениях. // MSVC outputs __int64
std::cout
Это необычно, но я могу жить с ним. Помимо странного имени, тип ведет себя как...
В C++ Weekly — Ep 313 — Проблема constexpr, на решение которой мне потребовалось 5 лет! Джейсон Тернер демонстрирует несколько методов времени компиляции для создания std::string во время компиляции, а затем передать его в std::string_view для...
В C++ Weekly — Ep 313 — Проблема constexpr, на решение которой мне потребовалось 5 лет! Джейсон Тернер демонстрирует несколько методов времени компиляции для создания std::string во время компиляции, а затем передать его в std::string_view для...