Python 3.x 在循环中动态更改方法名称?
实际上,我在尝试更改循环中的方法名称时遇到了困难。我正在用QT构建一个GUI,我面临着重复相同功能但使用不同名称的问题 这是我的密码:Python 3.x 在循环中动态更改方法名称?,python-3.x,function,loops,methods,Python 3.x,Function,Loops,Methods,实际上,我在尝试更改循环中的方法名称时遇到了困难。我正在用QT构建一个GUI,我面临着重复相同功能但使用不同名称的问题 这是我的密码: from Config import Ui_Dialog class Ui_Dialog_Useful(Ui_Dialog): def setupUi(self, widget): super().setupUi(widget) self.Sensitivity_filler() def Sensitivit
from Config import Ui_Dialog
class Ui_Dialog_Useful(Ui_Dialog):
def setupUi(self, widget):
super().setupUi(widget)
self.Sensitivity_filler()
def Sensitivity_filler(self):
self.Sensitivity_1.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_2.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_3.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_4.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_5.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_6.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_7.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_8.insertItems(0, ['10', '100', '1000'])
正如您所看到的,函数之间唯一的变化是QComboBox对象的名称。我必须执行这几次。有没有一种方法可以在循环中实现这一点
谢谢通常您不应该这样做(即动态名称,因为集合做得更好),但是由于UI代码往往比较复杂,您可以使用
getattr
来获取正确的对象
例如,您可能会:
for i in range(1, 9):
getattr(self, 'Sensitivity_'+str(i)).insertItems(0, ['10', '100', '1000'])
如果有一种不使用
getattr
的方法可以做到这一点,那么您肯定应该使用它。我对QT一点也不熟悉。例如,如果可能的话,您应该将敏感项存储为一个iterable(即,self.sensitivities
)并对其进行迭代。通常您不应该这样做(即动态名称,因为集合做得更好),但由于UI代码往往比较复杂,您可以使用getattr
获取正确的对象
例如,您可能会:
for i in range(1, 9):
getattr(self, 'Sensitivity_'+str(i)).insertItems(0, ['10', '100', '1000'])
如果有一种不使用
getattr
的方法可以做到这一点,那么您肯定应该使用它。我对QT一点也不熟悉。例如,如果可能的话,您应该将您的敏感项存储为一个iterable(即,self.sensitivities
)并对其进行迭代。+1表示在您的“不要这样做”后面加上一个“如果您想忽略良好实践,请按此操作。”太多的答案漏掉了下半部分。这对我来说完全有效。我将遵循你的建议,尝试建立一个交互式的。非常感谢你。+1在你的“不要这样做”后面加上一句“如果你想忽视良好的实践,这里是如何做的。”太多的答案遗漏了下半部分。这对我来说完全有效。我将遵循你的建议,尝试建立一个交互式的。非常感谢你。