我有一个创建窗口的小模块(program1)。我把它导入了我的另一个python程序(program2)。
如何让程序2获得self.x和x在program1中?
这是program1。
import Tkinter
class Class(Tkinter.Tk):
def __init__(self, parent):
Tkinter.Tk.__init__(self, parent)
self.parent = parent
self.Main()
def Main(self):
self.button= Tkinter.Button(self,text='hello')
self.button.pack()
self.x = 34
x = 62
def run():
app = Class(None)
app.mainloop()
if __name__ == "__main__":
run()
答案 0 :(得分:5)
您可以作为self.x
实例的成员访问变量Class
:
c = Class(parent)
print(c.x)
您无法访问局部变量 - 当方法调用结束时,它会超出范围。
答案 1 :(得分:1)
我不确定'self.x'和'x'的目的是什么,但是在类Class的'Main'方法中需要注意的一件事
def Main(self):
self.button= Tkinter.Button(self,text='hello')
self.button.pack()
self.x = 34
x = 62
是'x'和'self.x'是两个不同的变量。变量'x'是方法'Main'的局部变量,'self.x'是实例变量。像Mark所说,你可以访问实例变量'self.x'作为Class实例的属性,但方法变量'x'只能从'Main'方法中访问。如果您希望能够访问方法变量'x',那么您可以更改'Main'方法的签名,如下所示。
def Main(self,x=62):
self.button= Tkinter.Button(self,text='hello')
self.button.pack()
self.x = 34
return x
这样,当您从Class
的实例调用'Main'方法时,可以设置方法变量'x'的值>> c = Class()
>> c.Main(4)
4
或只保留默认
>> c.Main()
62
和Mark一样,你可以访问实例变量'self.x'
>> c.x
34