我的计划是这样的:使用 python 描述符,我想在赋值时读取变量的名称。当前代码:
class Decriptor:
def __init__(self, field_type: typing.Type[typing.Any]):
self.field_type = field_type
self.value = None
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, constant):
if issubclass(type(constant), self.field_type):
self.value = constant
else:
raise TypeError(f"expected an instance of type {self.field_type.__name__} for attribute {}, got {type(constant).__name__} instead")
我使用描述符的原因是在编译时实现静态类型并为字段分配和声明提供一个包装器。如果我要在课堂上实现它......
class Foo:
num = Decriptor(field_type=int)
def __init__(self, num):
self.z = num
目标:如何在没有直接引用的情况下将变量 num 的名称作为字符串并将其分配给 Descriptor 类中的字段,例如self.name
?因此,当我更改类的不同实例中的值时,我可以只写instance.__dict__[self.name] = constant
?