尝试从类返回变量将返回一个函数对象

时间:2019-02-21 19:37:15

标签: python oop tkinter

我正在寻求将变量从一个类中传递出去并传递到另一个中。为此,我将在一个方法中返回变量,并在另一个类中调用该方法。不幸的是,当我这样做时,我得到的只是:

<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 :(得分:1)

您将需要通过result = models.MusicData.objects.filter(playlist__isnull=True).values( "name").annotate(maxdate=Max("created_on")).values_list("id", flat=True) # Then filter on this list of id's 或类似的方法将实例本身传递给外部类:

lambda

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之后被浪费了,但是也许您的真实示例可以更好地使用...