请参考以下代码作为示例:
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提供的结构,它使应用程序的操作更加严格等等。不过,我想知道是否还有其他更绝对的好处我不知道。在
使用对象的明显优点是,您可以扩展它们的功能,而不仅仅是存储数据。例如,您可以有两个属性,并定义和},除非两者都匹配。在
__eq__
方法,该方法以某种方式使用这两个属性,而不是简单地比较这两个属性并返回{另外,一旦定义了一个类,就可以很容易地定义该类的新实例,这些实例将共享原始对象的结构,但是使用字典,您要么重新定义该结构,要么复制某种原始结构,然后更改每个元素,使其与您希望新的伪对象具有的值相匹配。在
字典的主要优点是它们具有各种预定义的方法(例如
.items()
),可以使用in
轻松进行迭代,可以使用dict理解方便地创建,并允许使用字符串变量轻松访问数据“成员”(尽管实际上,getattr
函数实现了相同的功能)对象)。在如果您使用的是包含JIT编译器(例如PyPy)的Python实现,那么使用实际对象可以提高编译器优化代码的能力(因为编译器更容易推断对象成员的使用方式,这与普通字典不同)。在
使用对象还允许子类化,这可以节省一些冗余的实现。在
相关问题 更多 >
编程相关推荐