He aquí un ejemplo muy simple de lo que estoy tratando de moverse:__init__ clase (no __init__ ejemplo)
class Test(object):
some_dict = {Test: True}
El problema es que no puedo hacer referencia a la prueba mientras aún está siendo definido
Normalmente, me gustaría hacer esto:
class Test(object):
some_dict = {}
def __init__(self):
if self.__class__.some_dict == {}:
self.__class__.some_dict = {Test: True}
Pero nunca creo una instancia de esta clase. No deja de ser un recipiente para contener un grupo de funciones y datos relacionados (tengo varias de estas clases, y paso alrededor de las referencias a ellos, por lo que es necesaria para la prueba de que sea la propia clase)
Así que mi La pregunta es, ¿cómo podría referirme a Test mientras se está definiendo, o hay algo similar a __init__
que se llama tan pronto como se define la clase? Si es posible, quiero que self.some_dict = {Test: True}
permanezca dentro de la definición de la clase. Esta es la única manera que sé cómo hacer esto hasta ahora:
class Test(object):
@classmethod
def class_init(cls):
cls.some_dict = {Test: True}
Test.class_init()
"El problema es que no puedo referirme a la prueba mientras todavía se está definiendo". ¿Asi que? ¿Qué tipo de referencia posible necesitas ** durante la definición **? La respuesta estándar es Ninguna: la definición de clase es estable, constante e invariante. ** Comportamiento ** puede cambiar. La definición no debe cambiar. ¿Qué estás tratando de hacer con este negocio de "definición variable"? –
La definición no está cambiando. Solo necesito una referencia a la clase, y para fines de organización, preferiría que establezca esa referencia cuando se esté definiendo la clase. – Ponkadoodle
Entiendo lo que estás tratando de hacer, pero no entiendo por qué estás tratando de hacerlo de esta manera y lo que estás buscando lograr. ¿Puedes elaborar un poco? Parece más arquitectónico que un "¿cómo convenzo a Python en ...?" problema para mí – Aea