1. @classmethod and @staticmethod
@classmethod
@staticmethod
http://stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod-for-beginner
2. yield
http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python