【问题标题】:working with placeholder in variable names in Python, wx.python在 Python 中使用变量名中的占位符,wx.python
【发布时间】:2014-11-29 23:21:08
【问题描述】:

我正在使用 wxpython,并希望通过使用循环来缩短我的 qode。以下示例不起作用,我想知道如何使它起作用。

Keys = ['Q_geo_ges_h','Q_geo_ges_k']
Values = [12.6,1.943]
for key,value in Keys,Values:
    'self.%s'%key = wx.TextCtrl(self,-1,value=str(value))

有没有办法从字符串列表中分配一个变量?

【问题讨论】:

    标签: python variables wxpython placeholder


    【解决方案1】:

    使用zip 构成keyvalue 对的序列。

    >>> keys = ['Q_geo_ges_h', 'Q_geo_ges_k']
    >>> values = [12.6, 1.943]
    >>> zip(keys, values)
    [('Q_geo_ges_h', 12.6), ('Q_geo_ges_k', 1.943)]
    

    并使用setattr设置属性:

    keys = ['Q_geo_ges_h', 'Q_geo_ges_k']
    values = [12.6, 1.943]
    for key, value in zip(keys, values):
        setattr(self, key, wx.TextCtrl(self, -1, value=str(value))
    

    【讨论】:

    • 非常感谢,这正是我所需要的——我可以经常使用它。
    • @zoipi 请注意,在大多数情况下,在这种情况下使用字典而不是使用setattr 会更简单、更清晰——对于初学者来说,它将数据与对象的所有其他属性分开。和 falsetru,这是 python 中一个非常常见的 XY 问题,你不应该到处推荐 setattr 给一个明显的初学者,至少没有提到字典。
    猜你喜欢
    • 2015-09-16
    • 2020-11-16
    • 2019-06-04
    • 2020-06-05
    • 1970-01-01
    • 2019-02-25
    • 2016-04-13
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多