スロット付きのPython記述子を使用します
-
29-10-2019 - |
質問
スロットの最適化を備えたクラスで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
正しい解決策はありません
所属していません StackOverflow