gpt4 book ai didi

Python:使用虚拟类传递变量名?

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:43 24 4
gpt4 key购买 nike

这是 function that returns a dict whose keys are the names of the input arguments 的跟进,我学到了很多东西(释义):

  • 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,并且更容易发现名称的拼写错误。正如我所说,不是反模式,前提是

  1. 类的范围仅限于非常具体的用法
  2. 您正在调用的例程或方法(例如您示例中的 vars)本质上是私有(private)的。我不想要具有该调用语义的公共(public)接口(interface),也不希望它作为返回的实体
  3. “dummy”类的名称在其意图和它所代表的聚合类型中非常明确。
  4. 该对象的生命周期很短而且很平静。这只是一个临时的数据包。

如果不遵守这些约束,请使用具有属性的完全认可的类。

关于Python:使用虚拟类传递变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com