Итак, я делаю класс, который может динамически возвращать свойство в зависимости от того, было ли к нему обращено свойство.Он также обнаруживает имя свойства при доступе из класса.мой код класса выглядит следующим образом:
class ConfigItem(object):
value: object
key:str
default: object
__name__:str = None
def __init__(self, default=None):
self.default: type(default) = default
self.value = default
self.key = "default_value"
def __get__(self, instance, owner):
if self.key:
self.value = os.environ.get(self.key,self.default)
else:
self.value = self.default
def __set_name__(self, owner, name):
self.__name__ = name
self.key = name
Я хочу, чтобы код имел следующее поведение:
при создании следующим образом:
a_test_key = ConfigItem('default_value')
a_test_key.key == 'a_test_key' #True
без необходимости передаватьвведите в конструктор и при доступе так:
key_value = a_test_key
возвращает a_test_key.value
, но при доступе любым другим способом, таким как:
a_test_key.default
a_test_key.key
возвращает уважаемыйзначения.
Я думаю, что решение связано с методом get (self, instance, owner), но я не уверен, как определить, было ли обращение к свойству из ConfigItem.
Есть ли какие-нибудь вопросы о том, как решить эту проблему?