Type checking of arguments Python

Xolve picture Xolve · Apr 9, 2009 · Viewed 94k times · Source

Sometimes checking of arguments in Python is necessary. e.g. I have a function which accepts either the address of other node in the network as the raw string address or class Node which encapsulates the other node's information.

I use type() function as in:

    if type(n) == type(Node):
        do this
    elif type(n) == type(str)
        do this

Is this a good way to do this?

Update 1: Python 3 has annotation for function parameters. These can be used for type checks using tool: http://mypy-lang.org/

Answer

Johannes Weiss picture Johannes Weiss · Apr 9, 2009

Use isinstance(). Sample:

if isinstance(n, unicode):
    # do this
elif isinstance(n, Node):
    # do that
...