Python: tell my IDE what type an object is

I don't know if it works in Spyder, but many completion engines (e.g. Jedi) also support assertions to tell them what type a variable is. For example:

def foo(param):
    assert isinstance(param, str)
    # now param will be considered a str
    param.|capitalize
           center
           count
           decode
           ...

Actually I use IntelliJ idea ( aka pyCharm ) and they offer multiple ways to specify variable types:

1. Specify Simple Variable

Very simple: Just add a comment with the type information behind the definition. From now on Pycharm supports autcompletition! e.g.:

def route():
    json = request.get_json() # type: dict

Source: https://www.jetbrains.com/help/pycharm/type-hinting-in-pycharm.html

2. Specify Parameter:

Add three quote signs after the beginning of a method and the idea will autocomplete a docstring, as in the following example:

example of method parameters

Source: https://www.jetbrains.com/help/pycharm/using-docstrings-to-specify-types.html

(Currently on my mobile, going to make it pretty later)


If you're using Python 3, you can use function annotations. As an example:

@typechecked
def greet(name: str, age: int) -> str:
    print("Hello {0}, you are {1} years old".format(name, age))

I don't use Spyder, but I would assume there's a way for it to read the annotations and act appropriately.