类型提示:类型类的参数

时间:2015-10-28 09:16:32

标签: python python-3.x types

我正在定义一个方法

def foo_my_class(my_class: ???, bar: str) -> None:
    """ Operate on my_class """

我想知道,如何使用类型提示功能来指定应该在第一个参数中传递类。

基本上,我应该把什么代替?在那里标记?感谢。

UPD:这里有一些代码可以更具体地说明我想要实现的目标。

class Base(object):
   """base class"""

class X(Base):
    """some class"""

class Y(Base):
    """some other class"""   

foo_my_class(X, "foo")    
foo_my_class(Y, "bar")

3 个答案:

答案 0 :(得分:15)

here所述,您可以使用 Type

from typing import Type

class X:
    """some class"""

def foo_my_class(my_class: Type[X], bar: str) -> None:
    """ Operate on my_class """

答案 1 :(得分:1)

您只需使用该类本身。

def foo_my_class(my_class: MyClass, bar: str) -> None:

来自the PEP(强调我的):

  

类型提示可以是内置类(包括在标准库或第三方扩展模块中定义的类),抽象基类,types模块中可用的类型,以及用户定义的类< / strong>(包括标准库或第三方模块中定义的那些)。

答案 2 :(得分:0)

我可能是错的,因为我还没有在Python 3.5中堕落和肮脏,但是看看documentation你应该能够用typing.Optional做到这一点。一个简短的例子。

>>> from typing import Optional
>>> 
>>> class MyClass(object):
>>>     def __init__(self):
>>>         self.a = 1
>>> 
>>> O = Optional[MyClass]
>>> 
>>> def test(x: O) -> int:
>>>     return x.a
>>> 
>>> myclass = MyClass()
>>> print test(myclass)
1

希望有所帮助。