Есть ли статический блок в классе в python

Я относительно новичок в python Я хотел бы запустить блок кода только один раз для класса. Как статический блок в java.

например:

class ABC:
    execute this once for a class.

Есть ли такие возможности в python?

В java мы пишем его вот так. Это выполняется только один раз для класса во время загрузки класса. Не для создания каждого объекта

public class StaticExample{
    static {
        System.out.println("This is first static block");
    }
}

Спасибо

Ответ 1

Для этого просто поместите код непосредственно под определение класса (параллельно определениям функций для класса.

Весь код непосредственно в классе выполняется после создания этого типа в пространстве имен класса. Пример:

class Test:
    i = 3
    y = 3 * i
    def testF(self):
        print Test.y

v = Test()
v.testF()
# >> 9

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

Объектно-ориентированная концепция Python довольно умна, но требуется немного, чтобы окунуться в нее! Продолжайте, это очень забавный язык.

Ответ 2

>>> class MyClass():
...     print "static block was executed"
... 
static block was executed
>>> obj = MyClass()
>>>

См. здесь дополнительную информацию о статических переменных/функциях в Python: Статические переменные класса в Python