使用对象比使用dict伪对象有什么好处?

2024-10-01 07:31:31 发布

您现在位置:Python中文网/ 问答频道 /正文

请参考以下代码作为示例:

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提供的结构,它使应用程序的操作更加严格等等。不过,我想知道是否还有其他更绝对的好处我不知道。在


Tags: 代码importselfnumpy示例asnprandom
2条回答

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

另外,一旦定义了一个类,就可以很容易地定义该类的新实例,这些实例将共享原始对象的结构,但是使用字典,您要么重新定义该结构,要么复制某种原始结构,然后更改每个元素,使其与您希望新的伪对象具有的值相匹配。在

字典的主要优点是它们具有各种预定义的方法(例如.items()),可以使用in轻松进行迭代,可以使用dict理解方便地创建,并允许使用字符串变量轻松访问数据“成员”(尽管实际上,getattr函数实现了相同的功能)对象)。在

如果您使用的是包含JIT编译器(例如PyPy)的Python实现,那么使用实际对象可以提高编译器优化代码的能力(因为编译器更容易推断对象成员的使用方式,这与普通字典不同)。在

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

相关问题 更多 >