擅长:python、mysql、java
<p>我明白你的情况,但换一种方法是有意义的:将变量名硬编码,因为你将引用它,并使用文件夹和sufix信息来获取图像文件名。在</p>
<p>在3.6之前的Python中,项目也无法自动猜出它所分配的名称(尽管可以用元类完成),因此将对象创建为字典,然后用dict内容填充模块可能是一个选项:</p>
<p>names=['loaded','agree','firstname','loginid','password','loginbutton','logout','middlename','lastname','submit','customerlist','loginpage','customerinfo','profile']</p>
<pre><code>class waittill:
def __init__(self, name):
self.imagepath = os.path.join(r"C:\python\python_projects\pyautogui\images\{}.png".format(name))
objects = {name:waittill(name) for name in names}
for name, obj in objects.items():
globals()[name] = obj
</code></pre>
<p>(请注意代码中另一个难以调试的问题:如果坚持使用<code>\</code>作为路径分隔符,则应在包含路径的字符串前面加上<code>r"</code>-否则,如果文件夹以n、t和其他字母开头,则路径将失败。在</p>
<p>另外,我使用<code>globals()</code>在模块名称空间中自动设置名称,但这不是一个好的实践。您可以使用一个类作为名称空间来完全相同-在这种情况下,只需将上面的代码放在一个类主体中(而不是在方法内部),并使用<code>locals()</code>而不是{<cd3>}</p>
^{2}$