Python booster¶
This page will give you a warm feeling in your stomach.
Non-Basic Python features¶
Theano doesn’t use your grandfather’s python.
properties
a specific attribute that has get and set methods which python automatically invokes.
See [http://www.python.org/doc/newstyle/ New style classes].
static methods vs. class methods vs. instance methods
Decorators:
@f def g(): ...runs function
f
before each invocation ofg
. See PEP 0318.staticmethod
is a specific decorator, since python 2.2
__metaclass__
is kinda like a decorator for classes. It runs the metaclass __init__ after the class is defined
setattr
+getattr
+hasattr
*args
is a tuple like argv in C++,**kwargs
is a keyword args version
pass
is no-op.functions (function objects) can have attributes too. This technique is often used to define a function’s error messages.
>>> def f(): return f.a >>> f.a = 5 >>> f() 5Warning about mutual imports:
- script a.py file defined a class A.
- script a.py imported file b.py
- file b.py imported a, and instantiated a.A()
- script a.py instantiated its own A(), and passed it to a function in b.py
- that function saw its argument as being of type __main__.A, not a.A.
Incidentally, this behaviour is one of the big reasons to put autotests in different files from the classes they test!
If all the test cases were put into
.py directly, then during the test cases, all This should never happen under normal usage, and can cause problems (like the one you are/were experiencing)..py classes instantiated by unit tests would have type __main__.<classname>
, instead of type<file>.<classname>
.