2010-11-21 2 views
2

У меня есть небольшой модуль, который создает окно (program1). Я импортировал это в другую программу python (program2).Импорт значений в Python

Как сделать программу 2 получить self.x и x, что находится в program1?

Это программа1.

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() 

ответ

5

Вы можете получить доступ к переменной self.x как член экземпляра Class:

c = Class(parent) 
print(c.x) 

Вы не можете получить доступ к локальной переменной - это выходит за рамки, когда заканчивается вызов метода.

+0

С c = Класс (родительский) print (c.x) Я продолжаю получать ошибку, которую родитель не задал. – rectangletangle

+1

Почему родитель должен быть определен там? Я думаю, вы должны начать с более простых проектов python и OO. – Falmarri

+0

'c = Класс (родительский)' эквивалентен строке 'app = Class (None)' в вашей программе1. Таким образом, установка родительского элемента в None должна работать. –

1

Я не знаю точно, что цель «self.x» и «х» являются лишь одна вещь, чтобы отметить в методе «Main» класса класса

def Main(self): 
     self.button= Tkinter.Button(self,text='hello') 
     self.button.pack() 

     self.x = 34 
     x = 62 

является то, что «х» и «self.x» - две разные переменные. Переменная «x» является локальной переменной для метода «Main» и «self.x» является переменной экземпляра. Как и Марк, вы можете получить доступ к переменной экземпляра «self.x» в качестве атрибута экземпляра класса, но переменная метода «x» доступна только из метода «Главная». Если вы хотите иметь доступ к переменной метода «x», вы можете изменить подпись метода «Главная» следующим образом.

def Main(self,x=62): 
    self.button= Tkinter.Button(self,text='hello') 
    self.button.pack() 

    self.x = 34 
    return x 

Таким образом, вы можете установить значение переменной метода «х» при вызове метода «Main» из экземпляра класса

>> c = Class() 
>> c.Main(4) 
4 

или просто сохранить значение по умолчанию

>> c.Main() 
62 

и, как и раньше, Mark сказал, что у вас будет доступ к переменной экземпляра «self.x»

>> c.x 
34