Python におけるイントロスペクションとは何ですか?

Guanhui
リリース: 2020-06-22 13:37:30
転載
2108 人が閲覧しました

Python におけるイントロスペクションとは何ですか?

内省とは何ですか?

日常生活において、内省は自己吟味の行為です。

コンピューター プログラミングでは、内省とは、何かを調べて、それが何であるか、何を知っているか、何ができるかを判断する能力を指します。イントロスペクションは、プログラマーに優れた柔軟性と制御を提供します。

もっと単純かつ率直に言うと、イントロスペクションとは、オブジェクト指向言語で書かれたプログラムが実行されているときに、オブジェクトの型を知ることができることを意味します。簡単に言えば、オブジェクトのタイプは実行時に知ることができます。

たとえば、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 &#39;int&#39;>
>>> type([])<class &#39;list&#39;>
ログイン後にコピー

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&#39;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(&#39;print&#39;)
Help on built-in function print in module builtins:

print(...)
  print(value, ..., sep=&#39; &#39;, end=&#39;\n&#39;, 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート