**イントロスペクションとは何ですか? ****
日常生活では、内省は自己検査行動です。
コンピュータプログラミングでは、イントロスペクションとは、何かを調べて、それが何であるか、何を知っているか、何ができるかを判断する機能を指します。イントロスペクションは、プログラマーに優れた柔軟性と制御を提供します。
より簡単かつ率直に言うと、イントロスペクションとは、オブジェクト指向の言語で記述されたプログラムが実行されているときに、オブジェクトのタイプを知る機能です。一言で言えば、オブジェクトのタイプは実行時に知ることができます。
たとえば、python、buby、object-C、c ++はすべて、内省する機能を備えています。C++の内省能力は最も弱く、タイプを知ることしかできませんが、pythonはタイプと属性を知ることができます。
イントロスペクションを理解するための最良の方法は、例を使用することです:タイプイントロスペクションこれは、さまざまなプログラミング言語でのイントロスペクションの例です(このリンクの例は非常に重要です。物語を通してイントロスペクションが何であるかを理解するのは難しいかもしれませんが、これらの例を通してあなたは理解することができます)
Pythonに戻ると、Pythonでのより一般的なイントロスペクションメカニズム(関数の使用法)は、dir()、type()、hasattr()、isinstance()です。これらの関数を通じて、プログラムの実行中のオブジェクトのステータスを知ることができます。タイプして、オブジェクトに特定のプロパティがあるかどうかを判断し、オブジェクトのプロパティにアクセスします。
dir()
dir()関数は、おそらくPythonのイントロスペクションメカニズムの最も有名な部分です。渡されたオブジェクトの属性名のソートされたリストを返します。オブジェクトが指定されていない場合、dir()は現在のスコープ内の名前を返します。 dir()関数をキーワードモジュールに適用して、それが何を明らかにするかを観察してみましょう。
import keyword
dir(keyword)['__all__','__builtins__','__doc__','__file__','__name__','__package__','iskeyword','kwlist','main']
type()
type()関数は、オブジェクトが文字列であるか整数であるか、または他のタイプのオブジェクトであるかを判別するのに役立ちます。これは、typesモジュールで定義された型と比較できる型オブジェクトを返すことによって行われます。
type(42)<class'int'type([])<class'list'
**isinstance() **
isinstance()関数を使用してオブジェクトをテストし、それが特定のタイプまたはカスタムクラスのインスタンスであるかどうかを判断できます。
isinstance("python", str)
True
pythonイントロスペクションでのヘルプ使用の拡張:
pythonのIDLEを開き、pythonインタープリターを入力します。pythonインタープリター自体がメインモジュールと見なされ、インタープリタープロンプトで知りたい情報を入力するため、最初にヘルプを求めます。 help、次にhelp()と入力し、helpユーティリティを入力し、プロンプトキーワードとモジュールに従って、pythonのキーワードと、pythonに付属するモジュールを理解するか、追加でインストールして定義します。終了する場合は、「q」と入力します。 '、Enterキーを押します。
オブジェクトを理解したい場合(pythonのすべてのオブジェクトはオブジェクトと見なすことができます)、helpとhelp()を要求することもできますが、オブジェクトの名前をhelp(print)などのhelp(object)の形式で括弧内に入力する必要があります。対象の内省コンテンツが多すぎて、コンテンツの一部しか貼り付けないものもあります。
help
Type help()for interactive help, or help(object)for help about object.help()
Welcome to Python 3.6's help utility!
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at https://docs.python.org/3.6/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit"....
help keywords
Here is a list of the Python keywords. Enter any keyword to get more help.
False def if raise
None del importreturn
True elif intry
and else is whileas except lambda with
assert finally nonlocal yieldbreakfor not
classfrom or
continue global pass
help modules
Please wait a moment while I gather a list of all available modules...
PIL base64 idlelib runpy
__ future__ bdb idna runscript
__ main__ binascii idna_ssl sched
_ ast binhex imaplib scrolledlist
_ asyncio bisect imghdr search
_ bisect browser imp
...
Enter any module name to get more help. Or, type "modules spam" to search
for modules whose name or summary contain the string "spam".help('print')
Help on built-infunction print in module builtins:print(...)print(value,..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object(stream); defaults to the current sys.stdout.
sep: string inserted between values,default a space.
end: string appended after the last value,default a newline.
flush: whether to forcibly flush the stream.
これまでのところ、pythonイントロスペクションとは何かに関するこの記事が紹介されています。関連するpythonイントロスペクションについては、ZaLou.Cnで以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。
Recommended Posts