Python 将现有函数添加到子类
我正在创建一些需要实现run方法的子类。它们都遵循一种模式:Python 将现有函数添加到子类,python,subclass,Python,Subclass,我正在创建一些需要实现run方法的子类。它们都遵循一种模式: from mylib import transformation_function_1 from mylib import transformation_function_2 def SubClass1(ParentClass): def run(self): subclass_data = transformation_function_1(self.parent_data) # Some
from mylib import transformation_function_1
from mylib import transformation_function_2
def SubClass1(ParentClass):
def run(self):
subclass_data = transformation_function_1(self.parent_data)
# Some other fixed logic.
def SubClass2(ParentClass):
def run(self):
subclass_data = transformation_function_2(self.parent_data)
# Some other fixed logic.
在一个中级课堂上,我是否可以得出这个逻辑?像这样的
from mylib import transformation_function_1
from mylib import transformation_function_2
def TransformationBase(ParentClass):
@abstractclassmethod
def transformation_function():
raise NotImplementedError
def run(self):
subclass_data = transformation_function(self.parent_data)
# Some other fixed logic.
def SubClass1(TransformationBase):
transformation_function = transformation_function_1
def SubClass2(TransformationBase):
transformation_function = transformation_function_2
谢谢 您可以执行以下操作:
class SubClass(TransformationBase):
def transformation_function(*args, **kwargs):
return transformation_function1(*args, **kwargs)
特殊函数staticmethod允许将本地方法声明为静态。假设您希望声明类,并且希望子类使用外部自由函数,您可以执行以下操作:
>>> class TransformationBase:
def transformation_function():
raise NotImplementedError
def run(self):
subclass_data = self.transformation_function(self.parent_data)
# Some other fixed logic.
>>> def transformation_function_1(data):
print('F1', data)
>>> def transformation_function_2(data):
print('F2', data)
return 2
>>> class SubClass1(TransformationBase):
transformation_function = staticmethod(transformation_function_1)
parent_data = "P1"
>>> c1 = SubClass1()
>>> c1.run()
F1 P1
>>>
所以你的问题是每个子类应该实现的函数已经在别处定义了,你想重用它们吗?我认为你应该在子类中实现函数,然后从中调用相应的外部函数。。。