私はWindows用のアクティブなPython2.7.232ビットのthreading
module( )のコードを調べています。<Python Home>/lib/threading.py
の__init__
関数ではclass Thread
、多くの変数が定義されています。
self.__target = target
self.__name = str(name or _newname())
self.__args = args
self.__kwargs = kwargs
self.__daemonic = self._set_daemon()
self.__ident = None
self.__started = Event()
self.__stopped = False
self.__block = Condition(Lock())
self.__initialized = True
これが私が次の__init__
関数を呼び出す方法ですclass Thread
:-
class ThreadWithReturnValue(Thread):
def __init__(self, group=None, target=None, name=None,
args=(), kwargs={}, Verbose=None):
Thread.__init__(self, group, target, name, args, kwargs, Verbose)
self._return = None
print 'in init: ', self._Thread__target
変数がの関数のself._Thread__target
どこにも初期化されていないことを理解できません。しかし、この変数を自分の関数で出力すると、 fromの関数の実際の値が表示されます。__init__
class Thread
__init__
self.__target
class Thread
__init__
また、threading
モジュールを編集して、この行を__init__
関数の最後の行として配置しようとしましたclass Thread
:-
print 'in init of Thread class in threading: ', self._Thread__target
それでも、値が出力されているのを見ることができ、インタープリターはエラーを表示しません。そこで、名前の変更を行っている可能性のある関数を見つけようとしました。しかし、それを見つけることができませんでした。
__init__
これは、の関数で定義された他のすべての変数で発生していますclass Thread
。self.__target
のような変数がどのようにに名前変更されているのか知りたいですself._Thread__target
。