4

以以下代码为例:

import numpy as np

N = 200
some_prop = np.random.randint(0,100, [N, N, N])

#option 1
class ObjectThing():
  def __init__(self, some_prop):
    self.some_prop = some_prop


object_thing = ObjectThing(some_prop)



#option 2
pseudo_thing = {'some_prop' : some_prop }

我喜欢选项 1 提供的结构,它使应用程序的操作更加严格等等。但是,我想知道是否还有其他我不知道的更绝对的好处。

4

2 回答 2

1

如果您正在使用包含 JIT 编译器(例如 PyPy)的 Python 实现,则使用实际对象可以提高编译器优化代码的能力(因为编译器更容易推断如何使用对象的成员,不像一本普通的字典)。

使用对象还允许子类化,这可以节省一些冗余的实现。

于 2013-03-04T03:12:33.177 回答
1

使用对象的明显优势是您可以扩展它们的功能,而不仅仅是存储数据。例如,您可以有两个属性,并__eq__以某种方式定义和使用这两个属性的方法,不是简单地比较它们并返回False,除非两者都匹配。

此外,一旦定义了一个类,您就可以轻松地定义该类的新实例,这些实例将共享原始的结构,但是使用字典,您要么必须重新定义该结构,要么制作某种副本原始的,然后更改每个元素以匹配您希望新伪对象具有的值。

字典的主要优点是它们带有各种预定义的方法(例如.items()),可以很容易地迭代inusing字符串变量(虽然实际上,该getattr函数用对象实现了同样的事情)。

于 2013-03-04T03:17:42.440 回答