godot/modules/gdscript/tests/scripts/runtime/features/static_variables.gd

@static_unload

static var perm := 0

static var prop := "Hello!":
	get: return prop + " suffix"
	set(value): prop = "prefix " + str(value)

static func get_data():
	return "data"

static var data = get_data()

class Inner:
	static var prop := "inner"
	static func _static_init() -> void:
		prints("Inner._static_init", prop)

	class InnerInner:
		static var prop := "inner inner"
		static func _static_init() -> void:
			prints("InnerInner._static_init", prop)

func test():
	prints("data:", data)

	prints("perm:", perm)
	prints("prop:", prop)

	perm = 1
	prop = "World!"

	prints("perm:", perm)
	prints("prop:", prop)

	prints("other.perm:", StaticVariablesOther.perm)
	prints("other.prop:", StaticVariablesOther.prop)

	StaticVariablesOther.perm = 2
	StaticVariablesOther.prop = "foo"

	prints("other.perm:", StaticVariablesOther.perm)
	prints("other.prop:", StaticVariablesOther.prop)

	@warning_ignore("unsafe_method_access")
	var path = get_script().get_path().get_base_dir()
	@warning_ignore("unsafe_call_argument")
	var other = load(path + "/static_variables_load.gd")

	prints("load.perm:", other.perm)
	prints("load.prop:", other.prop)

	other.perm = 3
	other.prop = "bar"

	prints("load.perm:", other.perm)
	prints("load.prop:", other.prop)