2015-10-28 83 views
0

中,我定義一個方法類型提示:參數類型類

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") 

回答

1

你只是使用這個類本身。

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

the PEP(重點煤礦):

類型的提示可以被內置類(包括那些在標準庫或第三方擴展模塊中定義的),抽象基類,在類型可用types模塊和用戶定義類(包括在標準庫或第三方模塊中定義的類)。

+0

我已更新我的問題。看來你的解決方案工作,如果我的my_class參數填充是基本子類之一。對我來說沒關係。但是,如果我需要讓my_class接受任何類,我需要使用''type''類型(my_class:type,...) – anti1869

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 

希望有所幫助。