46 lines
914 B
Python
46 lines
914 B
Python
from __future__ import annotations
|
|
from collections import defaultdict
|
|
|
|
|
|
class Parameter:
|
|
registered_params = defaultdict(dict)
|
|
|
|
def __init__(self, default_value, display_suffix=""):
|
|
self.value = default_value
|
|
self.display_suffix = display_suffix
|
|
|
|
def __set_name__(self, owner, name):
|
|
self.name = name
|
|
self.registered_params[owner.__name__][name] = self
|
|
|
|
def __get__(self, instance, owner):
|
|
return self.value
|
|
|
|
def __set__(self, instance, value):
|
|
self.value = value
|
|
|
|
def display(self):
|
|
return str(self.value) + " " + self.display_suffix
|
|
|
|
|
|
class A:
|
|
x = Parameter("lol")
|
|
y = Parameter(56.2)
|
|
|
|
|
|
class B:
|
|
x = Parameter(slice(None))
|
|
opt = None
|
|
|
|
|
|
def main():
|
|
print(Parameter.registered_params["A"])
|
|
print(Parameter.registered_params["B"])
|
|
a = A()
|
|
a.x = 5
|
|
print(a.x)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|