import inspect
class Foo(object):
pass
if __name__ == '__main__':
print type(Foo.__init__)
print inspect.getsourcelines(Foo.__init__)
uscita:Che cos'è un wrapper_descriptor e perché in questo caso Foo .__ init __()?
<type 'wrapper_descriptor'>
Traceback (most recent call last):
*snip*
File "/usr/lib/python2.7/inspect.py", line 420, in getfile
'function, traceback, frame, or code object'.format(object))
TypeError: <slot wrapper '__init__' of 'object' objects> is not a module, class, method, function, traceback, frame, or code object
Googling fornisce pochissime informazioni utili su che cosa, esattamente, un wrapper_descriptor è, e perché una classe vuota ha un metodo __init__
che non è un metodo, ma piuttosto un wrapper_descriptor.
Che cosa sta succedendo esattamente qui? Tutte le classi senza i metodi __init__
hanno uno di questi oggetti wrapper_descriptor? Perché c'è un __init__
nella dict di classe?
La documentazione dell'API C illustra alcuni dettagli oltre a questo, se ci tenete. Ma normalmente non ti interessa oltre al fatto che "slot wrapper", "method-wrapper" e simili sono cose che puoi chiamare come se fossero metodi associati, metodi non associati, ecc., Ma non hai Python codice sorgente. – abarnert