Métodos estáticos
O que pertence à família, não à instância.
dataforge
blueprint Temperatura:
celsius: Float := 0.0
static action de_fahrenheit(f):
t := spawn Temperatura()
t.celsius := (f - 32) * 5 / 9
yield t
static action congelamento():
yield 0.0
action em_fahrenheit():
yield self.celsius * 9 / 5 + 32Construtor alternativo#
É o uso mais comum: uma segunda forma de criar o objeto, com nome que diz o que ela faz.
dataforge
gelo := Temperatura.de_fahrenheit(32)
config := Config.do_arquivo("app.json")
data := Data.de_iso("2026-09-07")Temperatura.de_fahrenheit(32) é mais claro que um setup com um parâmetro escala que muda o significado do primeiro argumento.
Valor estático#
dataforge
blueprint Contador:
static total := 0 // compartilhado por todas as instâncias
action setup():
Contador.total += 1Erro útil#
Chamar um método de instância no blueprint mostra o spawn que falta, em vez de estourar Undefined name: self lá dentro:
text
erro[DF0301]: 'Temperatura.em_fahrenheit()' is an instance method and needs an object.
Spawn one first:
obj := spawn Temperatura(…)
obj.em_fahrenheit(…)
Or declare it as 'static action em_fahrenheit(…)' if it does not use 'self'.