From ed7f3d8509882429173a56032bd11725162244dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 5 Aug 2024 16:41:50 +0200 Subject: [PATCH] dont make descriptors attributes of the instance -> would loose functionality --- src/pydase/observer_pattern/observable/observable.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pydase/observer_pattern/observable/observable.py b/src/pydase/observer_pattern/observable/observable.py index c24b64c..474d684 100644 --- a/src/pydase/observer_pattern/observable/observable.py +++ b/src/pydase/observer_pattern/observable/observable.py @@ -6,7 +6,7 @@ from pydase.observer_pattern.observable.decorators import ( has_validate_set_decorator, ) from pydase.observer_pattern.observable.observable_object import ObservableObject -from pydase.utils.helpers import is_property_attribute +from pydase.utils.helpers import is_descriptor, is_property_attribute logger = logging.getLogger(__name__) @@ -24,6 +24,11 @@ class Observable(ObservableObject): for name, value in class_attrs.items(): if isinstance(value, property) or callable(value): continue + elif is_descriptor(value): + # Descriptors have to be stored as a class variable in another class to + # work properly. So don't make it an instance attribute. + self._initialise_new_objects(name, value) + continue self.__dict__[name] = self._initialise_new_objects(name, value) def __setattr__(self, name: str, value: Any) -> None: