[SOLVED] What’s the type for functions used as a dictionary value?

Issue

This Content is from Stack Overflow. Question asked by Khandaker Abrar Nadib

Map: dict[str, object] = {
"image" : Image.generate,
"video" : Video.generate,

}

Here, generate(json) is a function in both cases. However I’m getting a typehint error that "object" not callablemypy(error). What should be the appropriate type instead of object for the Map?



Solution

You can use dict[str,Callable] to allow any callable object as a value, but you might want to be more specific. At the very least, it sounds like the function must return a single string (the resulting JSON value), so you can write

dict[str, Callable[[...], str]]

to allow functions that take arbitrary arguments and return a str. If you know more about what the function can accept, you can replace ... with one or more specific argument types.


This Question was asked in StackOverflow by Khandaker Abrar Nadib and Answered by chepner It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?