Central Docs
Catálogo Inicio

Clases

Índice

Las clases son agregados nominales con métodos resueltos en compilación. No usan vtables ni estado de herencia en runtime.

class Point:
    func __init__(x: int32, y: int32) void:
        self.x = x
        self.y = y

    func total() int32:
        return self.x + self.y

func main() int32:
    point: Point = Point(2, 3)
    return point.total()

Una clase construible debe tener exactamente un iniciador: __init__ para construcción normal o __frontend__ para aceptar una conversión de frontend. Los métodos de instancia reciben self implícitamente.

Métodos estáticos y herencia

class Math:
    pass

    @static
    func twice(value: int32) int32:
        return value + value

class Child(Point):
    func __init__(value: int32) void:
        super.__init__(value, value)

Un método @static se llama mediante la clase. La herencia es simple y estática: la hija llama explícitamente a super.__init__ y los campos se aplanan en el layout.

__eq__() bool controla una instancia usada como condición. Los hooks __ongetter__ y __onsetter__ reciben el nombre como chain y su Len_t; devuelven 1 para permitir el acceso y 0 para detenerlo. @after los mueve después de la operación.

Del instance llama a __deletion__ si existe. Sin ese método no hay acción automática. @frozen limita las escrituras de atributos a __init__ o __frontend__ y se propaga por herencia.