Al tropezar con el típico ejemplo de clase Point al aprender Python, noté que por algún motivo no puedo tener un nivel de clase (variable estática) del mismo tipo que el de la clase. P.ej.Variables de clase del mismo tipo en Python
class Point:
ORIGIN = Point() # doesn't work
def __init__(self, x=0, y=0):
self.x = x
self.y = y
mientras que las mismas obras en Java:
class Point {
public static void main(final String[] args) { }
private static final Point ORIGIN = new Point(0, 0);
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
La pregunta es: ¿Hay alguna manera de lograr lo mismo en Python. En este momento estoy confiando en las variables de nivel de módulo y no me gusta esa solución. Además, ¿hay alguna razón por la cual no se puede hacer en el cuerpo de la clase?
"En este momento estoy confiando en las variables de nivel de módulo y no me gusta esa solución" ¿Por qué no? Las variables globales a nivel de módulo tienen mucho más sentido que las variables finales estáticas extrañas ocultas dentro de las definiciones de clases. ¿Qué pasa con una solución más simple? –
@ S.Lott: El razonamiento es que el ORIGEN * no * pertenece a ningún módulo. Si, por ejemplo, Decido mover esta clase a algún otro módulo, la forma en que se hace referencia a ORIGIN siempre es la misma. – sasuke
put ORIGIN es una instancia de Point y pertenece al mismo módulo que Point. Si mueves uno, ¿por qué no moverías el otro? –