AFAIK, a module's dict is readonly, so I don't believe a dict subclass will work there (I could be wrong) unless you hack up the module object from C. You can do it with descriptors on a ModuleType however, which should be plenty fast from Cython-land.<div>
<br></div><div><div><font face="'courier new', monospace">In [16]: class AGetter(object):</font></div><div><font face="'courier new', monospace"> ....: def __get__(self, obj, cls):</font></div><div><font face="'courier new', monospace"> ....: return obj.a</font></div>
<div><font face="'courier new', monospace"> ....: def __set__(self, obj, val):</font></div><div><font face="'courier new', monospace"> ....: obj.a = val</font></div><div><font face="'courier new', monospace"> ....: </font></div>
<div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">In [17]: class MyMod(types.ModuleType):</font></div><div><font face="'courier new', monospace"> ....: b = AGetter()</font></div>
<div><font face="'courier new', monospace"> ....: </font></div><div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">In [18]: mmod = MyMod('my_mod')</font></div>
<div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">In [20]: mmod.__dict__['a'] = 42</font></div><div><font face="'courier new', monospace"><br>
</font></div><div><font face="'courier new', monospace">In [21]: mmod.a</font></div><div><font face="'courier new', monospace">Out[21]: 42</font></div><div><font face="'courier new', monospace"><br>
</font></div><div><font face="'courier new', monospace">In [22]: mmod.b</font></div><div><font face="'courier new', monospace">Out[22]: 42</font></div><div><font face="'courier new', monospace"><br>
</font></div><div><font face="'courier new', monospace">In [23]: mmod.b = 87</font></div><div><font face="'courier new', monospace"><br></font></div><div><font face="'courier new', monospace">In [24]: mmod.a</font></div>
<div><font face="'courier new', monospace">Out[24]: 87</font></div><br></div>