метод python возвращает строку, а не метод instance - PullRequest
1 голос
/ 09 марта 2011

У меня есть класс и несколько методов в нем

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 ]

7 голосов
/ 09 марта 2011

Отсутствует () для вызова метода.Без () вы печатаете строковое представление объекта метода, что также верно для всех вызываемых объектов, включая бесплатные функции.

Убедитесь, что вы делаете это для всех вызовов методов (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()
0 голосов
/ 09 марта 2011
    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]: 
0 голосов
/ 09 марта 2011

в method2, вы можете вызвать функцию вместо назначения указателя функции.

def method2(self):
    text2 = self.method1()
    print text2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...