有没有办法知道一个方法所属的类。在下面的代码中,我想构建一个decorator,如果函数f
没有参数或没有参数,它可以调用名为get_f_name
或set_f_name
的方法。其思想是模仿jQuery的getter setter语法构建一个装饰器。你知道吗
为此,我必须知道函数f来自哪个类。你知道吗
def jqueryize(f):
# ????
class Test():
def __init__(self):
self.string = "A little text..."
self.dictionnary = {
'key_1': 12345,
'key_2': [1, 2, 3, 4, 5]
}
self.boolean = True
@jqueryize
def data(
self,
string = None,
dictionnary = None,
boolean = None
):
...
def set_data(
self,
string,
dictionnary,
boolean
):
...
def get_data(self):
print(
self.string,
self.dictionnary,
self.boolean,
sep = "\n"
)
在
jqueryize
运行时,Test
类不存在,data
只是一个普通函数。一种方法是使用两个decorator—一个用于方法,通过在函数上设置一个属性来标记要jqueryized的方法,然后一个类decorator查找类中所有标记的方法并执行实际的转换。使这项工作的原因是类装饰器在类创建之后执行。你知道吗使用元类也可以获得相同的结果。这一点更容易实现,但是您可以避免修饰每个具有修饰方法的类,只要它们子类化了完成繁重工作的元类的实例。你知道吗
相关问题 更多 >
编程相关推荐