Попытка вернуть переменную из класса возвращает функциональный объект - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу передать переменную из класса в другой.Для этого я возвращаю переменную в методе и вызываю этот метод в другом классе.К сожалению, когда я делаю это, все, что я получаю, это:

<function body.returntheline at 0x7f9444673bf8>

Мой код выглядит следующим образом:

from tkinter import *

class body:

    def __init__(self):

        root = Tk()
        self.input_file = Entry(root)
        self.input_file.pack(side = LEFT)
        self.launch = Button(root, text = "Go External", command = operator)
        self.launch.pack()
        self.launchx= Button(root, text = "GO", command = self.testingvalue)
        self.launchx.pack()
        root.mainloop()

    def testingvalue(self):
        thesillyvalue = self.input_file.get()
        print(thesillyvalue)

    def returntheline(self):
        test = str(self.input_file.get())
        return test

class operator:

    def __init__(self):
        self.textvar = body.returntheline()
        print(self.textvar)



if __name__ == "__main__":
    body()

Что мне нужно сделать, чтобы получить конкретное значение из этогокласс вместо объекта функции?Чтобы проверить, что значение работает, я настроил внутренний метод, который делает то же самое, только внутри класса.Он выводит строковый объект на консоль, поэтому я не понимаю, почему возвращаемый объект не может.

1 Ответ

0 голосов
/ 21 февраля 2019

Вам нужно будет передать сам экземпляр во внешний класс через lambda или аналогичный:

# under class body, change self.launch to this:
self.launch = Button(root, text = "Go External", command = lambda x=self: operator(x))

# Then under class operator:
class operator:

    def __init__(self, body_instance):                 # pass in the instance of body as argument
        self.textvar = body_instance.returntheline()   # directly call the instance method over the instance.
        print(self.textvar)

Лямбда в основном гарантирует, что вы всегда будете передавать self (экземпляр) ввнешний класс.

Но в этом случае экземпляр внешнего класса operator просто теряется после вызова __init__, но, возможно, ваш реальный пример лучше использовать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...