我正在定义一个方法
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")
答案 0 :(得分:15)
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
希望有所帮助。