Ecco un esempio molto semplice di quello che sto cercando di muoversi:classe __init__ (non istanza __init__)
class Test(object):
some_dict = {Test: True}
Il problema è che non riesco a fare riferimento alla prova mentre è ancora in fase di definizione
Normalmente, vorrei solo fare questo:
class Test(object):
some_dict = {}
def __init__(self):
if self.__class__.some_dict == {}:
self.__class__.some_dict = {Test: True}
Ma non ho mai creato un'istanza di questa classe. In realtà è solo un contenitore per contenere un gruppo di funzioni e dati correlati (ho alcune di queste classi e faccio riferimento a loro, quindi è è necessario per Test per essere la sua classe)
Quindi il mio la domanda è, come potrei fare riferimento a Test mentre è in fase di definizione, o c'è qualcosa di simile a __init__
che viene chiamato non appena viene definita la classe? Se possibile, voglio che self.some_dict = {Test: True}
rimanga all'interno della definizione della classe. Questo è l'unico modo che conosco come fare questo finora:
class Test(object):
@classmethod
def class_init(cls):
cls.some_dict = {Test: True}
Test.class_init()
"Il problema è che non posso fare riferimento a Test mentre è ancora in fase di definizione". Così? Quale tipo di riferimento hai bisogno ** durante la definizione **? La risposta standard è None: la definizione della classe è stabile, coerente e invariante. ** Il comportamento ** può cambiare. La definizione non dovrebbe cambiare. Che cosa stai cercando di fare con questa attività "a definizione variabile"? –
La definizione non sta cambiando. Ho solo bisogno di un riferimento alla classe e, per motivi organizzativi, preferirei che io impostassi quel riferimento quando la classe è in via di definizione. – Ponkadoodle
Capisco cosa stai cercando di fare, ma non capisco perché stai cercando di farlo in questo modo e quello che stai cercando di realizzare. Puoi elaborare un po '? Sembra più di un architettonico poi un "come posso convincere Python a ...?" problema per me. – Aea