Python 3.x 在循环中动态更改方法名称?

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

实际上,我在尝试更改循环中的方法名称时遇到了困难。我正在用QT构建一个GUI,我面临着重复相同功能但使用不同名称的问题

这是我的密码:

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在你的“不要这样做”后面加上一句“如果你想忽视良好的实践,这里是如何做的。”太多的答案遗漏了下半部分。这对我来说完全有效。我将遵循你的建议,尝试建立一个交互式的。非常感谢你。