ディスクリプタを取得するときに追加の引数を渡すことはできますか?例えばpython記述子の__get__を追加の引数で呼び出しますか?
、私が持っているしたいと思います。その後、
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()
とget:
initialname
initialnameextra
overridename
overridenameextra
がありますこの作品を作る方法は?私もelem1.__get__(self, self.__class__, extra_text='extra)
を呼び出して、extra_text
を必須のパラメータにしてみましたが、実際にそれを提供する方法は分かりませんでしたか?
記述子がない場合は、この構文を達成する別の方法がありますか?
ありがとうございます!
'self.elem1()'と 'self.elem1(extra_text = 'extra')'に少し変更すると、基本的にメソッドが再作成されました。 AFAIKそれは可能かもしれないが、私は決してそれをしないだろう。 – Bakuriu
ディスクリプタは属性( 'selfelem1'のように、単に' elem1'ではない)としてアクセスされたときにしか機能しないので、あなたは絶対にこのようにすることはできません。あなたができることは、記述子の '__get__'があなたが望む引数を受け入れる呼び出し可能なオブジェクトを返すようにすることです。しかし、あなたは普通の方法ではできないことを何をしようとしていますか? – BrenBarn
@BrenBarn私の間違い、私は '自己 'を持っていた!私がしようとしていた主なことは、paramで渡すことなく、記述子クラスのインスタンスを取得することでした。 – lsglick