我有很多课程,实现了不同站点的一些一般任务:
class AbstractCalculator :
pass # ... abstract methods lying here
class Realization1 (AbstractCalculator) :
@classmethod
def calculate_foo(...) :
# ...
@classmethod
def calculate_bar(...) :
# ...
class Realization2 (AbstractCalculator) :
@classmethod
def calculate_foo(...) :
# ...
@classmethod
def calculate_bar(...) :
# ...
然后我将所有这些类聚合到一个字典中现在我介绍新的不同 API:
class NewAbstractClass :
# ... introducting new API ...
@staticmethod
def adopt(old_class) :
# .. converting AbstractClass to NewAbstactClass
然后我使用像@decorator 这样的采用()方法,将所有旧实现转换为新实现。
但这一切都非常奇怪和复杂。有没有更好的方法来做到这一点?
UPD @ColinMcGrath:
不,我肯定在问其他人。
我的采用()装饰器正在工作,我对它的运行没有任何问题(只是,它的主体与我的问题无关,所以我没有提供它)。
我认为在其源代码中对数十个不同类进行硬编码装饰并不是一个最佳主意,并且正在寻找规范的解决方案。