内省とは何ですか?
日常生活において、内省は自己吟味の行為です。
コンピューター プログラミングでは、内省とは、何かを調べて、それが何であるか、何を知っているか、何ができるかを判断する能力を指します。イントロスペクションは、プログラマーに優れた柔軟性と制御を提供します。
もっと単純かつ率直に言うと、イントロスペクションとは、オブジェクト指向言語で書かれたプログラムが実行されているときに、オブジェクトの型を知ることができることを意味します。簡単に言えば、オブジェクトのタイプは実行時に知ることができます。
たとえば、Python、buby、object-C、および 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 オブジェクトを返すことによって行われます。
>>> type(42)<class 'int'> >>> type([])<class 'list'>
isinstance()
isinstance() 関数を使用すると、オブジェクトをテストして、それが特定の型またはカスタム クラスのインスタンスであるかどうかを判断できます。
>>> isinstance("python", str) True
Python イントロスペクションでの使用法拡張のヘルプ:
Python の IDLE を開き、Python インタープリターを入力します。Python インタープリター自体はメイン モジュールとみなされ、インタープリター プロンプト >>> が表示されます。知りたい情報を入力します。最初にヘルプを要求します。help と入力し、次に help() と入力します。ヘルプ ユーティリティに入り、プロンプトのキーワード、モジュールに従って、表示される Python キーワードとモジュールを理解します。 Python を使用してインストールされているか、当社によって追加でインストールおよび定義されています。終了する場合は、「q」を入力して Enter を押してください。
オブジェクトについて知りたい場合 (Python のすべてのオブジェクトはオブジェクトと見なされます)、help() を要求することもできますが、help 形式で括弧内にオブジェクトの名前を入力する必要があります。 (オブジェクト)、たとえば help(print) の場合、オブジェクトにはイントロスペクション コンテンツが多すぎるため、コンテンツの一部だけを貼り付けるものもあります。
>>> 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 import return True elif in try and else is while as except lambda with assert finally nonlocal yield break for not class from 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-in function 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 チュートリアル 」
以上がPython におけるイントロスペクションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。