1

記述子を取得するときに追加の引数を渡すことは可能ですか?

たとえば、次のようにします。

class Element(object):
    def __init__(self, text='initial'):
        self.text = text

    def __get__(self, instance, owner, extra_text=''):
        print self.text + instance.name + extra_text

そして、次のように使用できます。

class MyClass(object):
    elem1 = Element()
    elem2 = Element(text='override')

    def __init__(self, name):
        self.name = name

    def print_elems(self):
        self.elem1
        self.elem1(extra_text='extra')
        self.elem2
        self.elem2(extra_text='extra')

MyClass('name').print_elems()

そして、次を取得します。

initialname
initialnameextra
overridename
overridenameextra

これを機能させる方法はありますか?必要なパラメーターを呼び出しelem1.__get__(self, self.__class__, extra_text='extra)て作成しようとしましextra_textたが、実際にそれを提供する方法がわかりませんでしたか?

記述子を使用しない場合、この構文を実現する別の方法はありますか?

ありがとう!

4

1 に答える 1