Импорт значений в Python - PullRequest
2 голосов
/ 21 ноября 2010

У меня есть маленький модуль, который создает окно (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()

Ответы [ 2 ]

5 голосов
/ 21 ноября 2010

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

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

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

1 голос
/ 22 ноября 2010

Я не совсем уверен, какова цель «self.x» и «x», но в методе «Main» класса Class

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' является переменной экземпляра.Как говорит Марк, вы можете обращаться к переменной экземпляра «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

Таким образом, вы можете установить значение методапеременная 'x', когда вы вызываете метод 'Main' из экземпляра класса

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

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

>> c.Main()
62

, и, как и раньше, Марк сказал, что вы получите доступк переменной экземпляра 'self.x'

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