[英]How to hint that a variable is a class inheriting from another class?
考虑以下人为设计的代码段:
class Fooer():
def __init__(self, *args, **kwargs):
# do things
def foo(self) -> int:
# do more things
def foo(fooer, *args, **kwargs) -> int:
return x(*args, **kwargs).foo()
我想暗示foo()
的fooer
参数应该是Fooer
的子类。 它不是Fooer
的实例, Fooer
Fooer
本身或其子类。 我能想到的最好的是
def foo(fooer: type, *args, **kwargs) -> int
还不够具体。
我怎样才能更好地暗示这一点?
从PEP-484( 类对象的类型 )中,解决方案是使用Type[C]
指示C
子类,其中C
是由基类限制的类型var。
F = TypeVar('F', bound=Fooer)
def foo(fooer: Type[F], *args,**kwargs) -> int:
...
(说句公道话,我在PEP-484指示的TypeVar
的答案中使用类本身之间并没有什么区别。)
还有一Type
在typing
from typing import Type
class A(object):
def __init__(self, thing):
self.thing = thing
class B(A):
pass
def make_it(a_class: Type[A]):
return a_class(3)
make_it(B) # type checks ok
make_it(str) # type checks complaining
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.