'How can I check the specific type of TypeVar? [duplicate]
If I have code like
T = TypeVar('T')
class MyClass(Generic[T]):
@classmethod
def my_func() -> T:
#if T is a string:
return "this is a string!"
else:
return some_other_func_that_returns_T()
There are 2 questions:
- how can I implement #if T is a string?
- even if 1) is solved, how can I return a concrete string type and not have python complain about return type mismatch on
my_func
?
Solution 1:[1]
You can try the following code snnipet.
Example Code:
from typing import TypeVar, Generic
T = TypeVar('T')
class MyClass(Generic[T]):
def my_func(self) -> T:
if self.__orig_class__.__args__[0].__name__ == "str":
return "this is a string!"
else:
return "this is not a string!"
print(MyClass[str]().my_func())
print(MyClass[int]().my_func())
Example Output:
this is a string!
this is not a string!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Sabil |