В Python все является объектом. Даже класс. Не объект класса, а сам класс.

>>> ().__class__
<type 'tuple'>
>>> ().__class__.__class__
<type 'type'>

Если из класса (считай "шаблон") мы создает объекты ("по шаблону делаем экземпляры"), то что делать как назвать ситуацию, когда кто-то делает классы? Стоит сказать зачем это может быть нужно:

  • изменять типы создаваемых классов.
  • Например, подмешивать миксины(примиси)
  • автоматически вызывать некоторый код каждый раз, когда где-то создается класс, дочерний от данного.
  • Например, дергать метод, который будет логгировать время запуска функции
  • изменять параметры создаваемого дочернего класса.
  • Например, на все функции класса повесить декоратор. (какую-то валидацию)
  • для написания ORM

Это все позволяют реализовать мета-классы.

Ссылки для чтения:



Комментарии