python方法返回字符串而不是instancemethod

时间:2011-03-09 18:11:00

标签: python oop

我有一个班级和一些方法

class ThisClass:

    def method1(self):
        text1 = 'iloveyou'
        return text1

    def method2(self):
        text2 = self.method1
        print str(text2)

thisObj = ThisClass()
thisObj.method2

我得到的结果就像是

<bound method thisclass.method2 of <__main__.thisclass instance at 0x10042eb90>>

如何打印'iloveyou'而不是那个?

谢谢!

3 个答案:

答案 0 :(得分:7)

缺少方法调用的()。如果没有(),则打印方法对象的字符串表示形式,对于包括自由函数在内的所有可调用对象也是如此。

确保您为所有方法调用执行此操作(self.method 1和thisObj.method2

class ThisClass:

    def method1(self):
        text1 = 'iloveyou'
        return text1

    def method2(self):
        text2 = self.method1()
        print str(text2)

thisObj = ThisClass()
thisObj.method2()

答案 1 :(得分:0)

method2中,您可以调用函数而不是分配函数指针。

def method2(self):
    text2 = self.method1()
    print text2

答案 2 :(得分:0)

    In [23]: %cpaste
    Pasting code; enter '--' alone on the line to stop.
    :class ThisClass:
    :
    :    def method1(self):
    :        text1 = 'iloveyou'
    :        return text1
    :
    :    def method2(self):
    :        text2 = self.method1()
    :        print str(text2)
    :--

    In [24]: thisObj = ThisClass()

    In [25]: thisObj.method2()
    iloveyou

    In [26]: