擅长:python、mysql、java
<p>你可以这样做</p>
<pre><code>from typing import TypeVar
# We define T as a TypeVar bound to the base class GenericCopyable
T = TypeVar('T', bound='GenericCopyable')
class GenericCopyable:
# we return the type T of the type of self
# Basically returning an instance of the calling
# type's class
def copy(self: T) -> T:
return type(self)()
class CopyableFoo(GenericCopyable):
pass
foo = CopyableFoo()
bar = foo.copy()
print(bar)
</code></pre>
<p>这看起来有点笨拙,因为通常我们不需要注释<code>self</code>,因为它隐式地是它绑定到的类的一种类型。
然而,mypy似乎对此没有意见</p>