6

私はいくつかの関数を含むクラスを持っています(そのほとんどには、smthを解析し、必要なすべての情報を取得して印刷するコードが含まれています)。クラスを印刷しようとしていますが、うまくいきません。<_ main _.TestClass インスタンスの 0x0000000003650888> のように。コードサンプル:

from lxml import html
import urllib2
url = 'someurl.com'


class TestClass:

    def testFun(self):
        f = urllib2.urlopen(url).read()
        #some code

        print 'Value for ' +url+ ':', SomeVariable

    def testFun2(self):
        f2 = urllib2.urlopen(url).read()
        #some code

        print 'Value2 for ' +url+ ':', SomeVariable2

test = TestClass()
print test

関数をクラス外に出力すると、すべて問題ありません。私が間違っていることと、クラスを印刷するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

7

それが期待される動作です。__str__または__repr__メソッドを定義してクラスに文字列表現を与えない限り、Python はクラスがどのように表現されているかを知ることができません。

明確にするために:__repr__通常、同様のオブジェクトに評価できる文字列を生成するように定義されています(あなたの場合はTestClass())。デフォルトで__repr__は、表示されているものが印刷され<__main__.TestClass instance at 0xdeadbeef>ます。

__repr__

def __repr__(self):
    return self.__class__.__name__ + '()' # put constructor arguments in the ()

__str__クラスの人間が読める「説明」を生成するように定義できます。提供されない場合は、 が得られ__repr__ます。

__str__

def __str__(self):
    return "(TestClass instance)"
于 2013-02-19T07:28:02.240 に答える
1

クラス自体ではなく、クラスのインスタンスを出力したいようです。インスタンスを出力するときに使用する文字列を返す__str__orメソッドを定義します。__repr__

参照: http://docs.python.org/2/reference/datamodel.html#object.__repr__

http://docs.python.org/2/reference/datamodel.html#object.__str__

于 2013-02-19T07:29:08.210 に答える