如何解决是否继承自AbstractClass和具体的ThirdPartyLibraryClass?
在python中,假设我有一个MainClass
,它在初始化时期望实现AbstractClass
,然后在内部使用它,即:
def __init__(self,anInstanceOf:AbstractClass): [...]
在测试期间,我注入了FakeTestClass
来验证对AbstractClass隐含的设施的MainClass调用是否符合预期。 FakeTestClass从AbstractClass继承并实现:
class FakeTestClass(AbstractClass): [...]
但是,在生产代码中,我必须注入ThirdPartyLibraryClass
实例,该实例提供MainClass实际需要的功能,但不继承自AbstractClass,它仅提供相同的方法签名。
在python中,这是有效的,因为没有严格强制键入。
我确实有点of。我想总是按照MainClass.__init__
我有什么选择?我可以想到一些:
- 忽略该问题:如果它的行为像鸭子,那就是鸭子,类型提示就是这样,给读者一个提示
- 编写一个包装器:该包装器继承自AbstractClass,但将调用转发到它拥有的ThirdPartyLibraryClass实例: 从概念上讲很简单,但它要求转发每个调用(静态地或通过元编程)或至少转发AbstractClass中隐含的子集
- 编写一个薄包装器 :(按帖子标题)仅继承自ThirdPartyLibraryClass和AbstractClass,但为空,仅提供从ThirdPartyLibraryClass继承的功能-感觉非常像鸭子打字,可能具有多重继承会导致意外行为?
- 其他?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。