2012-11-22 2 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

ありがとう、魅力のように今働く!私が遭遇したもう一つの問題は、 "some string \ n"のような改行が問題を引き起こすということでした。私は+ os.sepでそれらを置き換えました。同じ質問をした誰かがこれを読んでいる場合に備えて。 – Sven

+1

@Sven: 'os.sep'?代わりに '' \ 'と二重に\\ n'を使うのはなぜですか? 'os.sep'はUNIXプラットフォームでは'/'です。 –

+1

私の悪いです。あなたは正しい、と私はos.linesepを意味した。 – Sven

関連する問題