2012-11-22 51 views
9

我想使用一個doctest註釋塊來演示特定基類的用法,但是這不能用doctest來完成,或者我做錯了什麼。 這是我的簡單演示代碼。Python:如何在doctest中定義一個類?

class MyClass(object): 
    ''' 
    >>> m = MyClass() 
    >>> print m.x 
    1 
    >>> class A(MyClass): 
    >>> def __init__(self): 
    >>> super(A,self).__init__() 
    >>> 
    >>> a = A() 
    >>> print a.x 
    1 
    ''' 


    def __init__(self): 
     self.x = 1 


if __name__ == "__main__": 
    import doctest 
    doctest.testmod()  

該代碼無法運行。這是發佈的第一個錯誤:

Failed example: 
class A(MyClass): 
Exception raised: 
Traceback (most recent call last): 
    File "C:\Python27\lib\doctest.py", line 1254, in __run 
    compileflags, 1) in test.globs 
    File "<doctest __main__.MyClass[2]>", line 1 
    class A(MyClass): 
        ^
SyntaxError: unexpected EOF while parsing 
+0

@avasal:我的錯誤; wohle的帖子格式不正確,我將其中的其他部分與該部分重新整理。 –

回答

14

在解釋器中嘗試一下;它使用...來顯示延續線。 >>>只是針對語句或表達,而在一個不完整的,直到class你有一個空...續行:

>>> class A(MyClass): 
    ...  def __init__(self): 
    ...   super(A, self).__init__() 
    ... 
+0

非常感謝,現在就像一個魅力!我碰到的另一個問題是,像「某些字符串\ n」這樣的換行符會造成麻煩。我用+ os.sep替換了它們。以防萬一有相同問題的人讀這個。 – Sven

+1

@Sven:'os.sep'?爲什麼不把*替換成'\\ n'呢?例如,在UNIX平臺上'os.sep'是'/'。 –

+1

我的不好。你是對的,我的意思是os.linesep。 – Sven

相關問題