When migrating from PHP/Drupal to Python/Django, the lack of variable debugging can really impede your ability to get a feel for whats going on.
In PHP, I use print_r() and var_dump() type functions almost out of habit, just to see what information is being passed through to learn how things are working, or for debugging.
I havn't actually managed to find something that does the same in Python thing yet, but this comes pretty close so far. I'm sure someone can use this to work out what they need to do with it.
The output of the function varies, depending on the type of object being parsed.
a = [ 1, 2, 3, 4, 5 ]
# Outputs [ 1, 2, 3, 4, 5 ]
# Outputs all methods
# ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Now the best part about this function is that it also prints out the attributes of a the class instance.
title = "Title"
description = "Description of something"
return [ 1, 2, 3 ]
Using dir() on an instance of that class would give:
c = ExampleClass()
# ['__doc__', '__module__', 'description', 'my_class_function', 'title']
If anyone knows how to make it work better, feel free to let me know!