【问题标题】:Reading class attributes in the same order as declared in Python以与 Python 中声明的顺序相同的顺序读取类属性
【发布时间】:2015-06-17 04:18:06
【问题描述】:

我正在开发一些代码,这些代码需要按照声明它们的顺序访问类的属性。我找到了类似问题的以下答案:https://stackoverflow.com/a/4460034 但是正如评论中提到的那样,它不是线程安全的。我正在使用 Python 2.7。我想知道在收集属性时是否有办法强制 python 使用 OrderedDict?

实际用例是能够像在此处完成的那样定义结构 (http://code.activestate.com/recipes/498149/),但解决方案应该是线程安全的。

【问题讨论】:

  • 我想你可以在课堂上使用__slots__
  • 对我来说这听起来像the XY problem
  • 是的,你可以,有一些关于 SO 的相关问题。

标签: python python-2.7 ordereddictionary


【解决方案1】:

您的确切问题在 Python3 中有一个使用元类的解决方案。在the docs 中有描述。

但是,它使用__prepare__ 类方法,这在Python2.7 中不可用。经过一番谷歌搜索后,我确实发现 this solution__prepare__ 移植到 Python2.7,但它非常笨拙和肮脏。

在我看来,您使用的是XY problem,您的问题可以通过不同的方法解决。

【讨论】:

  • @orip 谢谢,Mentioned solution 正是我想要的。
  • @pigeek 如果我的回答解决了您的问题,请考虑通过单击我的回答旁边的复选标记将其标记为已接受。这有助于未来的用户,并给我和你一点声誉。此外,它是 ORLP,而不是 ORIP ;)
猜你喜欢
  • 2015-07-19
  • 2011-05-26
  • 2013-10-19
  • 2013-05-07
  • 1970-01-01
  • 2023-03-07
  • 2011-01-12
  • 2020-08-10
相关资源
最近更新 更多