擅长:python、mysql、java
<p><em>“它一定很慢-您必须搜索字段值。”</em>如果您认为字典查找很慢,那么python会给您带来一系列的心脏病发作。考虑</p>
<pre><code>foo = 'somestring'
bar = bar
baz = someobj.variable
</code></pre>
<p>Python计算了<code>'somestring'</code>的哈希值,因为它在创建所有字符串时都是这样做的。每次我们提到它们时,它都会在模块的命名空间<code>foo</code>和<code>bar</code>中查找它们。访问对象变量需要在对象的<code>dict</code>中查找它们。你知道吗</p>
<p>获得类似结构的行为的两种方法是定义类级变量或使用<code>__slots__</code>为对象定义一组固定的变量。你知道吗</p>
<pre><code>class MyStruct(object):
FIELD1 = 0
FIELD2 = 'foo'
FIELD3 = 'bar'
print(MyStruct.FIELD2)
s = MyStruct()
s.FIELD2 = 'baz'
print(s.FIELD2)
class MySlots(object):
__slots__ = ['FIELD1', 'FIELD2', 'FIELD3']
def __init__(self, FIELD1=0, FIELD2='foo', FIELD3='bar'):
self.FIELD1 = FIELD1
self.FIELD2 = FIELD2
self.FIELD3 = FIELD3
s = MySlots()
print(s.FIELD2)
</code></pre>
<p>这些可能是令人愉快的,但它们并不比使用<code>dict</code>快。你知道吗</p>