import inspect
class Foo(object):
pass
if __name__ == '__main__':
print type(Foo.__init__)
print inspect.getsourcelines(Foo.__init__)
Выход:Что такое wrapper_descriptor и почему 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 дает очень мало полезной информации о том, что, собственно, wrapper_descriptor, и почему пустой класс имеет __init__
метод, а не метод, а скорее wrapper_descriptor.
Что именно происходит здесь? У всех классов без __init__
методов есть одна из этих вещей wrapper_descriptor? Почему в классе dict вообще есть __init__
?
Документация C API объясняет некоторые детали, помимо этого, если вам все равно. Но обычно вам все равно, что «обертка слотов», «метод-обертка» и т. Д. - это то, что вы можете назвать так, как если бы они были связанными методами, несвязанными методами и т. Д., Но не имеют никакого Python исходный код. – abarnert