我想成爲其中有槽優化一類能夠使用Python描述:使用Python描述與插槽
class C(object):
__slots__ = ['a']
a = MyDescriptor('a')
def __init__(self, val):
self.a = val
我的問題是如何實現的描述符類,以便能夠存儲調用描述符對象的類實例中的值。通常的解決方案看起來像下面的一個,但由於「字典」,將無法正常工作時,「槽」中的C級調用不再定義:
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
執行後,我可以看到'C .__ dict__'被創建。這不是我們想要避免的嗎?無論如何,查看文檔'__slots__'已經在使用描述符接口來實現它自己的目的,所以這可能會非常困難。 – dhill
使用Python 3,C只有一個mappinyproxy而不是字典。更重要的是,C的實例沒有'__dict__' – Oz123