获取描述符时是否可以传递其他参数?
例如,我想要:
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
所需的参数,但无法找到任何实际提供它的方法?
如果没有描述符,是否有另一种方法来实现这种语法?
谢谢!