質問

スロットの最適化を備えたクラスでPython記述子を使用できるようになりたいです。

class C(object):    
    __slots__ = ['a']
    a = MyDescriptor('a')
    def __init__(self, val):
        self.a = val

私が抱えている問題は、記述子オブジェクトを呼び出すクラスインスタンスに値を保存できるように、記述子クラスを実装する方法です。通常のソリューションは以下のソリューションのように見えますが、「スロット」がCクラスで呼び出されたときに「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

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top