擅长:python、mysql、java
<p>一种可能的解决方案是重写子类中的方法,然后使用指定自己实例的返回类型的子类方法调用超类方法</p>
<pre><code>class GenericCopyable:
def copy(self) -> GenericCopyable:
... # whatever is required to copy this
class CopyableFoo(GenericCopyable):
def copy(self)->CopyableFoo:
return super().copy()
</code></pre>
<p>另一种可能的解决方案是使用键入模块导入Union。这指定父类中的函数能够返回多种类型</p>
<pre><code>
from typing import Union
class GenericCopyable:
def copy(self) -> Union[GenericCopyable,CopyableFoo]:
... # whatever is required to copy this
class CopyableFoo(GenericCopyable):
#Call parent class method directly
GenericCopyable.copy()
</code></pre>