Voici un exemple très simple de ce que je suis en train de se déplacer:classe __init__ (pas exemple __init__)
class Test(object):
some_dict = {Test: True}
Le problème est que je ne peux pas se référer à essai pendant qu'il est encore en cours de définition
Normalement, je ferais juste ceci:
class Test(object):
some_dict = {}
def __init__(self):
if self.__class__.some_dict == {}:
self.__class__.some_dict = {Test: True}
Mais je ne crée jamais une instance de cette classe. C'est vraiment juste un conteneur pour contenir un groupe de fonctions et de données connexes (j'ai plusieurs de ces classes, et je leur passe des références, donc est nécessaire pour que Test soit sa propre classe)
question est, comment pourrais-je me référer à Test alors qu'il est en cours de définition, ou y at-il quelque chose de similaire à __init__
qui est appelé dès que la classe est définie? Si possible, je veux que self.some_dict = {Test: True}
reste dans la définition de la classe. Ceci est la seule façon que je sais comment faire cela jusqu'à présent:
class Test(object):
@classmethod
def class_init(cls):
cls.some_dict = {Test: True}
Test.class_init()
"Le problème est que je ne peux pas me référer à Test tant qu'il est encore en cours de définition". Alors? De quel type de référence avez-vous besoin ** pendant la définition **? La réponse standard est None: la définition de classe est stable, cohérente et invariante. ** Comportement ** peut changer. La définition ne devrait pas changer. Qu'essayez-vous de faire avec cette entreprise de «définition variable»? –
La définition ne change pas. J'ai juste besoin d'une référence à la classe, et à des fins d'organisation, je préférerais que je fixe cette référence lorsque la classe est en cours de définition. – Ponkadoodle
Je comprends ce que vous essayez de faire, mais je ne comprends pas pourquoi vous essayez de le faire de cette façon et ce que vous cherchez à accomplir. Pouvez-vous élaborer un peu? Cela ressemble plus à une architecture qu'à un "comment est-ce que je peux python ...?" question à moi. – Aea