因此,我正在制作一个可以根据是否访问了属性来动态返回属性的类。当被类访问时,它还会检测属性的名称。我的课程代码如下
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 (自身,实例,所有者)方法有关,但是我不确定如何检测是否已从ConfigItem访问属性。
任何参加者如何解决此问题?