L'equivalente di
static {
// Code here
}
non esiste in Python per impostazione predefinita. La cosa più vicina, pur essendo "Pythonic", sembra essere quella di creare un decoratore e fare l'inizializzazione lì come:
def static_initialization_decorator_for_myclass(cls):
cls.initialize_static_stuff()
return cls
@static_initialization_decorator_for_myclass
class MyClass:
@classmethod
def initialize_static_stuff():
# Code here
Creare un nuovo decoratore per ogni classe per fare la stessa cosa non ha senso. Quindi, ho pensato di creare un decoratore standard (ad esempio "initializestatic") e lasciare che quel decoratore chiami un determinato nome di metodo (ad esempio "init_static") come:
def initializestatic(cls):
cls.init_static()
return cls
@initializestatic
class MyClass:
@classmethod
def init_static():
# Code here
In questo modo, posso sempre usare lo stesso decoratore e ogni volta che ho bisogno di un inizializzatore statico, inserisco il seguente metodo in una classe e inserirò @initializestatic
decorator in cima alla classe:
@classmethod
def init_static():
# Code here
Dato che è così semplice, perché non esiste una soluzione integrata per l'inizializzazione statica in Python? So che questo sembra uno sfogo piuttosto che una domanda, ma sono curioso dei possibili motivi per escludere un inizializzatore statico da Python.