import inspect
class Foo(object):
pass
if __name__ == '__main__':
print type(Foo.__init__)
print inspect.getsourcelines(Foo.__init__)
Ausgang:Was ist ein Wrapper_descriptor, und warum ist Foo .__ init __() in diesem Fall?
<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
googeln gibt sehr wenig nützliche Informationen über, was genau ein wrapper_descriptor ist, und warum eine leere Klasse hat eine __init__
Methode, die keine Methode, sondern vielmehr eine wrapper_descriptor.
Was genau passiert hier? Haben alle Klassen ohne __init__
Methoden einen dieser wrapper_descriptor Dinge? Warum gibt es eine __init__
in der Klasse dict überhaupt?
Die C-API-Dokumentation einige Details darüber hinaus erklärt, wenn Sie sich interessieren. Aber normalerweise ist es dir egal, dass "slot wrapper", "method-wrapper" und ähnliches Dinge sind, die du aufrufen kannst, als wären sie gebundene Methoden, ungebundene Methoden, etc., aber keine Python Quellcode. – abarnert