python-从另一个函数调用变量

python-从另一个函数调用变量,python,function,variables,Python,Function,Variables,iam正在处理tkinter iam使用filedialog上载文件我的目标是使用tow按钮。 上传txt文件的按钮1 按钮2用于处理文件,请参见我当前的函数设置 class procFile: def uploadFile(self, filename): self.filename = filename def displayName(self): return self.filename def filePath(self):

iam正在处理tkinter iam使用filedialog上载文件我的目标是使用tow按钮。 上传txt文件的按钮1 按钮2用于处理文件,请参见我当前的函数设置

class procFile:
    def uploadFile(self, filename):
        self.filename = filename

    def displayName(self):
        return self.filename

    def filePath(self):
        print("%s" %self.filename)

def main():
    upload = procFile()
    upload.uploadFile(filedialog.askopenfilename(filetypes=(('txt', '*.txt'), ('All Files', '*.*'))))
    upload.filePath()

我需要另一个按钮来启动另一个函数,该函数将从主函数访问变量

尽管您的问题在提供细节方面很枯燥,但以下两种方法可以帮助我理解您的问题

方法1 如果要访问类外函数中的类变量,请执行以下操作:

class Class:
    # do something
    # example:
    def __init__(self):
        self.var = 2
        print(self.var)

def outsideFunc():
    # operations you want to do
    # example:
    print(a.var * 3)
class Class:
    # do something
    # example:
    def __init__(self):
        self.var = 4
        print(self.var)

    def func(self):
        # operations you want to do
        # example
        print(self.var + 5)
结果

>> a = Class()
2
>> outsideFunc()
6
>> b = Class()
4
>> b.func()
9
请注意,
outsideFunc()
可以在程序运行期间的任何时候定义。但是,只能在初始化类后调用
outsideFunc()

这是因为
filepath
是类
procfile
的一个实例,该类仅在类初始化后定义。初始化类之后的时间段可以后跟各种对象,例如函数
class.func()
、变量
class.var
甚至嵌套类
class.subClass

方法2 如果要访问类内的类变量,请执行以下操作:

class Class:
    # do something
    # example:
    def __init__(self):
        self.var = 2
        print(self.var)

def outsideFunc():
    # operations you want to do
    # example:
    print(a.var * 3)
class Class:
    # do something
    # example:
    def __init__(self):
        self.var = 4
        print(self.var)

    def func(self):
        # operations you want to do
        # example
        print(self.var + 5)
结果

>> a = Class()
2
>> outsideFunc()
6
>> b = Class()
4
>> b.func()
9
只需执行与之前相同的操作,即通过类中的
self.var
访问变量

比较 方法1要求在外部函数中调用类变量时,它必须与用于初始化类的变量名相同。因此,当您执行
a=Class()
时,类之外引用初始化类的任何函数都必须执行
a.object
,其中对象可以是函数、变量或子类

方法2需要同样的东西。但是,当类中的函数引用它的一个变量时,它需要使用
self.object
,其中对象可以是函数、变量或子类


两者都要求首先使用
varName=className()
初始化类,其中varName只是用于引用类的变量。之后,像以前一样使用
varName.object

我不明白。您可以从主程序访问
upload.filename
。@Jean-Françoisfare,tkinter按钮需要函数启动,当我调用主函数时,我会收到另一个打开文件提示。我只需要访问加载了第一个按钮的变量。我在代码中看不到任何Tkinter按钮。请考虑张贴A。你需要更清楚地解释你想让程序做什么。顺便说一句,
main
通常是程序的主要入口点,因此在定义了所有函数和类之后,应该只调用一次。当然,你不必这样做,但是如果你多次调用
main
,阅读你的程序的人会感到困惑。谢谢@PM2Ring,这个简单的程序将读取txt文件,它有浏览按钮和处理按钮。我想用第一个按钮打开一个txt文件,然后用第二个按钮读取文件。我的按钮是:browse=button(root,text=“brows”,command=main)process=button(root,text=“process”,command=process),现在我需要的是一个函数,它将从main访问变量,以获取文件路径并对其进行处理。我可以把read函数放在我的主函数中,但我想这样做。你需要把这些信息添加到你的问题中。你的Tkinter GUI在一个类中吗?如果您将按钮
命令
函数定义为该类的方法,它们将能够访问该类的属性。非常感谢方法2解决了我的问题…很高兴提供帮助,祝您度过愉快的一天!