Классы являются объектами в том смысле, что ими можно манипулировать в коде Python, как и любым другим объектом. Другие показали, как вы можете передавать их функциям, позволяя им работать как с любым объектом. Вот как вы можете это сделать:
class Foo(object):
pass
f = Foo()
f.a = "a" # assigns attribute on instance f
Foo.b = "b" # assigns attribute on class Foo, and thus on all instances including f
print f.a, f.b
Во-вторых, как и все объекты, классы создаются во время выполнения. То есть определение класса - это код, который выполняется , а не структура, которая компилируется до того, как что-либо выполнится. Это означает, что класс может «запекать» вещи, которые известны только при запуске программы, такие как переменные среды или пользовательский ввод. Они оцениваются один раз, когда класс объявляется, а затем становятся частью класса. Это отличается от скомпилированных языков, таких как C #, которые требуют, чтобы такое поведение было реализовано по-другому.
Наконец, классы, как и любой объект, создаются из классов. Как объект создается из класса, так и класс создается из специального класса, называемого метаклассом . Вы можете написать свои собственные метаклассы, чтобы изменить способ определения классов.