很确定我知道这个问题的答案,但想向 python 社区询问这个问题。
我正在开发一个python项目,目前的趋势是剪切变量名或类名以将其作为其他方法中的参数传递......就像:
myVar.__classname__[6:]
或最差:
try :
...
except Error as err :
myVar = err.message.split(':')[0]
getattr(myInst, myVar)
等等......也就是说,我们必须尊重一个非常严格的命名约定,该约定将适合所有那些可怕的代码行,但我想知道这是否是一种常见的做法,我完全不合规矩,或者我是正确地说这只是......可怕。
对我来说这似乎是一个非常糟糕的主意,但因为我们别无选择......
感谢您对我有帮助的任何回复
编辑:这是尝试中的实际代码/除非您想了解更多详细信息:
except ValueError as err:
field_error = self.klass.__name__ + '_' + err.message.split(':')[0]
getattr(self.ui, field_error).setText(err.message)
编辑:所以有些人要求提供更多详细信息:
在上面的示例中,当用户输入的值错误时,我们想在字段中设置错误消息。
self.klass 代表一个 SQL Alchemy 类,“命名约定”说每个字段都应该以它前面的 SQL Alchemy 类名开头,然后是下划线,然后是我们设置错误消息的字段(目前相同)用户输入错误)。
这将“构造”(哦天哪……这感觉太糟糕了)错误的 ui 字段的名称,然后我们将使用通用 ui 上的 getattr 来获取它。
这感觉非常错误,因为它基于一个命名约定,当我们开始有更多类时,可能会有数十亿个例外......实际上,我不介意修复这个,但整个项目都是基于这个命名约定. 第一个示例基于我们的应用程序有不同的 ui 文件这一事实,这些文件由代码(如 7CDGR01 )索引。然后这些由一个类完成以添加行为(信号处理......等)。如果我保留相同的示例,则该类名为:Screen7CDGR01。因此,要获得屏幕代码,您将获得类名的结尾,从第 6 个字符开始......然后将其发送到另一个方法等等......
想你们都明白了,这不是我投的,我觉得这很糟糕,我不是python方面的专家,但我认为即使python允许我们做很多事情,也不应该那样使用它.