在过去的6个月中,我为不同的计算创建了许多类和函数。现在我想将它们加入一个类中,以便其他用户可以使用它。与许多方法一样,这些方法可以按顺序执行,并且对于不同的数据集,可能需要多次运行该顺序。我想在主类中创建一个函数,保存用户使用的过程,这样用户就可以再次运行它,而无需再次执行整个过程。你知道吗
重要提示:我不想更改已经实现的类,但是如果这是唯一的方法,没有问题。你知道吗
这个想法或多或少类似于下面的代码:
class process(object):
def __init__(self):
self.procedure = []
def MethodA(valueA):
pass
def MethodB(valueB):
pass
def UpdateProcedure(self, method, arguments, values):
# Execute this every time that MethodA or MethodB is executed.
new = {'Method':method, 'Arguments':arguments, 'Values':values}
self.procedure.append(new)
例如:
a = process.MethodA(2)
b = process.MethodB(3)
print(process.procedure)
>>> [{'Method':'MethodA', 'Arguments':['valueA'], 'Values':[2]}, {'Method':'MethodB', 'Arguments':['valueB'], 'Values':[3]}]
我曾尝试将函数inspect.currentframe
和__getattribute__
一起使用,但没有得到很好的结果。你知道吗
有什么办法帮我解决这个问题吗?你知道吗
谢谢
以下是如何使用装饰师,根据Moinuddin Quadri的建议:
这使得每次调用这些修饰方法时,都会将它们的参数附加到该对象的过程数组中。此装饰程序将在非类方法上失败。你知道吗
调用以下命令:
如果印刷精美,将产生以下结果:
其中
<__main__.process object at 0x7f25803d28d0>
是进程对象(self
)阅读更多关于装饰者的信息:https://en.wikipedia.org/wiki/Python_syntax_and_semantics#Decorators
相关问题 更多 >
编程相关推荐