现在很清楚元类是什么,有一个相关的概念,我一直在使用,而不知道它的真正含义.
我想每个人都用括号做错了,导致"对象不可调用"异常.更重要的是,使用__init__并__new__导致想知道这种血腥__call__可以用于什么.
你能给我一些解释,包括魔术方法的例子吗?
生成器只是一个函数,它返回一个可以在其上调用的对象,这样每次调用它都会返回一些值,直到它引发一个StopIteration异常,表示已生成所有值.这样的对象称为迭代器.
>>> def myGen(n):
... yield n
... yield n + 1
...
>>> g = myGen(6)
Run Code Online (Sandbox Code Playgroud)
我从Python中理解生成器中引用了这个?
这是我想弄清楚的:
哪个是发电机?myGen还是myGen(6)?
根据上面提到的报价,我认为发电机应该是myGen.并且myGen(6)是返回的迭代器对象.但我真的不确定.
当我尝试这个时:
>>> type(myGen)
<type 'function'>
>>> type(g) # <1>this is confusing me.
<type 'generator'>
>>> callable(g) # <2> g is not callable.
False
>>> callable(myGen)
True
>>> g is iter(g) # <3> so g should an iterable and an iterator
True # at the same time. And it …Run Code Online (Sandbox Code Playgroud)我以为我self在某种程度上理解了。但我遇到了这个:
for f in flags:
if f not in flagMap:
raise error.Error('bad debug flag %s' % (f,))
self._flags = self._flags | flagMap[f]
self('debug category \'%s\' enabled' % f)
Run Code Online (Sandbox Code Playgroud)
有什么self(...)作用?