我试图理解为什么dictproxy >>> class A(object):
pass
>>> A.__dict__ is A.__dict__
False
每次访问时都会更改其ID。
channels = 32;
sampleRate = 500;
fid = fopen('C:\Users\metin.senturk\Desktop\MyFile.bin', 'rb');
rawData = fread(fid, [channels, inf], 'float32');
根据我的理解,dictproxy是一个特殊的只读字典,但这并不能解释这种行为。
答案 0 :(得分:2)
A.__dict__
不是静态对象,每次我们访问A.__dict__
时,它都会在内部调用一个方法,该方法返回我们得到的内容。所以每次我们得到不同的对象。
现在该方法是什么
当我们访问A.__dict__
时,此调用将被评估为meta_type_of_A.__dict__[__dict__]
,这意味着它将调用A的元类的__getattribute__
。
>>> class mymeta(type):
def __init__(cls, name, bases,dict):
print "in my meta"
def __getattribute__(*args):
print "in get attribute of meta class"
return "A test string"
>>> class A(object):
__metaclass__ = mymeta
pass
in my meta
>>> d = A.__dict__
in get attribute of meta class
>>> print d
A test string