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