我正在寻求将变量从一个类中传递出去并传递到另一个中。为此,我将在一个方法中返回变量,并在另一个类中调用该方法。不幸的是,当我这样做时,我得到的只是:
<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()
要从此类而不是函数对象中获取特定值,该怎么办?为了测试该值是否有效,我建立了一个内部方法,该方法仅在类中执行相同的操作。它确实将一个字符串对象打印到控制台,所以我对为什么返回的对象不知道感到困惑。
答案 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
之后被浪费了,但是也许您的真实示例可以更好地使用...