这是后续返回一个字典的函数,其键是输入参数的名称 https://stackoverflow.com/questions/9586305/python-function-that-returns-a-dict-whose-keys-are-the-names-of-the-input-argum/9586506#9586506,我学到了很多东西(释义):
- 总的来说,Python 对象不知道它们的名字。
- 不,这一般来说是不可能的
*args
。您必须使用关键字参数
- 当参数数量固定时,您可以这样做
locals
- 使用全局变量()。仅当值在模块范围内唯一时才有效,因此它很脆弱
- 无论如何,你最好不要这样做并重新思考这个问题。
第一点强调了我对 Python 变量的根本误解。反应非常有教育意义,几乎是即时的,显然这是一个很好理解但很容易混淆的话题。
由于我想学习如何正确地做事,创建一个虚拟类来简单地保存带有附加名称的变量是否被认为是不好的做法?
class system: pass
S = system ()
S.T = 1.0
S.N = 20
S.L = 10
print vars(S)
这实现了我最初的意图,但我想知道是否有一些我没有考虑到的东西可能会在以后咬我。
我这样做是为了向 Javascript 致敬,在 Javascript 中,字典和实例变量之间没有任何区别。我认为它不一定是反模式,也是因为与字典不同,如果你没有值,它会引发 AttributeError 而不是 KeyError,并且更容易发现名称的拼写错误。正如我所说,这不是反模式,前提是
- 类的范围仅限于非常特定的用途
- 您调用的例程或方法(例如示例中的变量)本质上是私有的。我不希望有一个具有调用语义的公共接口,也不希望它作为返回的实体
- “虚拟”类的名称在其意图及其代表的聚合类型方面非常明确。
- 该对象的生命周期短暂且平静。它只是一个临时的数据包。
如果不遵守这些约束,请选择具有属性的完全认可的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)