如何从同一类的不同实例中访问类成员函数?python

如何从同一类的不同实例中访问类成员函数?python,python,class,dictionary,tkinter,Python,Class,Dictionary,Tkinter,我的问题是我的tkinter应用程序。我有一个按钮用于折叠应用程序的一部分,但是,如果我单击左侧的每个按钮,我必须按下折叠按钮7次,以除去首先在createArea成员函数中创建的应用程序右侧的所有实例 我已将该类的每个实例存储在名为dictionary的字典中,我需要使用destroyRight函数来销毁每个实例中应用程序的所有右侧 我不确定如何访问存储在字典中的每个类实例的函数,也不确定如何使一个类的一个实例与所有其他实例通信 非常感谢您的帮助 从tkinter导入* root=Tk()

我的问题是我的
tkinter
应用程序。我有一个按钮用于折叠应用程序的一部分,但是,如果我单击左侧的每个按钮,我必须按下折叠按钮7次,以除去首先在
createArea
成员函数中创建的应用程序右侧的所有实例

我已将该类的每个实例存储在名为
dictionary
的字典中,我需要使用
destroyRight
函数来销毁每个实例中应用程序的所有右侧

我不确定如何访问存储在字典中的每个类实例的函数,也不确定如何使一个类的一个实例与所有其他实例通信

非常感谢您的帮助

从tkinter导入*
root=Tk()
类别按钮:
定义初始值(self、master、imperialText、metricText、metricVal):
self.imperialText,self.metricText,self.metricVal,self.master=imperialText,metricText,metricVal,master
self.displayedText=(self.imperialText+'-'+self.metricText)
self.button=button(self.master,text=self.displayedText,command=self.createArea)
self.button.config(高度=3,宽度=30)
self.button.grid(列=0)
self.rightCreated=False
self.rightButtons=[]
def createArea(自):
self.rightCreated=True
self.entryBox=条目(self.master)
self.entryBox.bind(“”,self.calc)
self.entryBox.grid(列=1,行=1)
self.label=label(self.master,text='Enter'+self.imperialText)
self.label.grid(列=1,行=0)

self.backButton=Button(self.master,text='您所要做的就是类似于
字典['B1'].calc()
,它访问字典中的第一个按钮并调用
calc
方法。

您所要做的就是类似于
字典['B1'].calc()
访问字典中的第一个按钮并调用
calc
方法。

实例是字典中的值这一事实没有什么特别之处。您可以认为这就像每个实例都有单独的变量
B1
B2
,…一样(事实上,全局名称空间只是一个字典)。将它们放在dict中的一个优点是,您可以轻松地在实例上循环,并在每个实例上调用相同的方法,如:

for b in dictionary.values():
    b.collapse()

或者诸如此类。

您的实例是字典中的值这一事实没有什么特别之处。您可以将其视为每个实例都有单独的变量
B1
B2
,…事实上,全局命名空间只是一个字典)。将它们放在dict中的一个优点是,您可以轻松地在实例上循环,并在每个实例上调用相同的方法,如:

for b in dictionary.values():
    b.collapse()

或者随便什么。

我可以把它放在类中,并从类中调用其他类实例的函数吗?谢谢你的回答btwno如果你想调用特定实例的方法,你就必须这样做,显式调用它们的方法。。即使它是在dictionary:dictionary[I].calc()中的I的循环
Ah好的,谢谢你回答我的问题。明天早上我会尝试一下。我使用你的示例编辑了代码以包含一个函数,但是现在我只得到了collapseAll dictionary[I]中第42行的文件“C:\Python32\Projects\GUI\Tkinter 8.py”。destronRight()文件“C:\Python32\Projects\GUI\Tkinter 8.py”,第31行,在collapseAll字典[i]中的文件“C:\Python32\Projects\GUI\Tkinter 8.py”的第42行中一次又一次地,我能把它放在类中并从内部调用其他类实例的函数吗?谢谢你的回答btwno如果你想调用特定实例的方法,你必须这样做,显式地调用它们的方法..即使它在dictionary:dictionary[I].calc()中的I的循环中
Ah好的,谢谢你回答我的问题。明天早上我会尝试一下。我使用你的示例编辑了代码以包含一个函数,但是现在我只得到了collapseAll dictionary[I]中第42行的文件“C:\Python32\Projects\GUI\Tkinter 8.py”。destronRight()文件“C:\Python32\Projects\GUI\Tkinter 8.py”,第31行,在collapseAll字典[i].destroyRight()中的文件“C:\Python32\Projects\GUI\Tkinter 8.py”的第42行中