How can type hints be declared to indicate that a function returns an instance of the class reference that is passed as an argument?
Declaring it as follows does not seem right, as it indicates that the returned type is the same as the type of the argument:
from typing import TypeVar
T = TypeVar('T')
def my_factory(some_class: T) -> T:
instance_of_some_class = some_class()
return instance_of_some_class
Example usage:
class MyClass:
pass
my_class = my_factory(MyClass) # Inferred type should be MyClass
Here's how you can add type hints to our function: Add a colon and a data type after each function parameter. Add an arrow ( -> ) and a data type after the function to specify the return data type.
Generic TypesGenerics are not just used for function and method parameters. They can also be used to define classes that can contain, or work with, multiple types. These “generic types” allow us to state what type, or types, we want to work with for each instance when we instantiate the class.
Type hints improve IDEs and linters. They make it much easier to statically reason about your code. Type hints help you build and maintain a cleaner architecture. The act of writing type hints forces you to think about the types in your program.
According to PEP-484, the right way to do this is to use Type[T]
for the argument:
from typing import TypeVar, Type
T = TypeVar('T')
def my_factory(some_class: Type[T]) -> T:
instance_of_some_class = some_class()
return instance_of_some_class
It however seems like my editor does not (yet) support this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With