我希望能够在具有插槽优化的类中使用 python 描述符:
class C(object):
__slots__ = ['a']
a = MyDescriptor('a')
def __init__(self, val):
self.a = val
我遇到的问题是如何实现描述符类,以便能够将值存储在调用描述符对象的类实例中。通常的解决方案类似于下面的解决方案,但由于在 C 类中调用“slots”时不再定义“dict”,因此无法正常工作:
class MyDescriptor(object):
__slots__ = ['name']
def __init__(self, name_):
self.name = name_
def __get__(self, instance, owner):
if self.name not in instance.__dict__:
raise AttributeError, self.name
return instance.__dict__[self.name]
def __set__(self, instance, value):
instance.__dict__[self.name] = value