我想创建一个具有父类方法的子类,该方法在子类中是“类方法”,但在父类中不是。
本质上,我正在努力完成以下任务:
class foo(Object):
def meth1(self, val):
self.value = val
class bar(foo):
meth1 = classmethod(foo.meth1)
请您参考如下方法:
我也不完全确定您想要的确切行为是什么,但假设您希望 bar.meth1(42) 等同于 foo.meth1 作为 bar 的类方法(“self”是类),那么您可以通过以下方式实现:
def convert_to_classmethod(method):
return classmethod(method.im_func)
class bar(foo):
meth1 = convert_to_classmethod(foo.meth1)
classmethod(foo.meth1) 的问题是 foo.meth1 已经被转换为方法,第一个参数具有特殊含义。您需要撤消此操作并查看底层函数对象,重新解释“self”的含义。
我还要提醒您,这是一件非常奇怪的事情,因此容易让阅读您代码的任何人感到困惑。您最好考虑针对您的问题采用不同的解决方案。
