Pythonオブジェクトと.NETオブジェクトの比較方法を徹底解説
.NETオブジェクトとPythonオブジェクトの基本的な共通点
デフォルトでは、すべての.NETオブジェクトは参照型として扱われ、その等価性(equality)とハッシュコードはメモリアドレスによって決定されます。また、既存のオブジェクトを変数に代入する場合、実際にはそのメモリ上のアドレスを指し示すだけであり、コストの高いコピー処理は発生しません。
興味深いことに、この仕組みはある程度までPythonオブジェクトにも当てはまります。両言語とも、オブジェクトの同一性をメモリ上の参照に基づいて管理している点で似ています。
Pythonオブジェクトの基本特性
すべてのPythonオブジェクトには、以下の2つの重要な属性が備わっています。
- 一意の識別子(identity):組み込み関数
id(x)が返す整数値として表現されます。 - 型(type):組み込み関数
type(x)によって取得できます。
識別子と型は変更不可
Pythonにおいて、オブジェクトの識別子は一度生成されたら変更できません。同様に、オブジェクトの型も後から変更することはできません。これは.NETの参照型の挙動とよく似た特徴です。
可変オブジェクトと不可変オブジェクト
Pythonのオブジェクトは、内容の変更可否によって大きく2種類に分けられます。
- 可変(mutable)なオブジェクト:識別子や型を変えることなく、内容を変更できるオブジェクトです。例として、リスト(list)や辞書(dict)などが挙げられます。
- 不可変(immutable)なオブジェクト:一度作成すると内容を変更できないオブジェクトです。例として、数値、文字列(str)、タプル(tuple)などがあります。
型オブジェクトの役割
Pythonでは、型そのものも「型オブジェクト」として表現されます。この型オブジェクトは、その型に属するオブジェクトに関する詳細な情報(属性、メソッド、継承関係など)を保持しており、Pythonのオブジェクトシステムの中核を担っています。
-
Pythonの日付(DateTime)とJavaScriptの日付(DateTime)を比較する方法とは?
PythonとJavaScriptの日付処理における2つの大きな違いJavaScriptとPythonでは、日付・時刻(DateTime)の扱い方に2つの大きな違いがあります。1つ目は「月」の引数の意味の違い、2つ目はデフォルトのタイムゾーンの違いです。それぞれ詳しく見ていきましょう。違いその1:月の指定範囲が異なるJavaScriptでは月を0〜11の範囲で指定するのに対し、Pythonでは1〜12の範囲で指定します。そのため、まったく同じタプルでも、PythonとJavaScriptでは実際には異なる日付を表すことになります。(2017, 11, 1)Python:2017年11月1日Ja
-
PythonのBokehで画像を操作・表示する方法
Pythonの可視化ライブラリBokehで画像を扱うには、image_url()メソッドを使い、画像URLのリストを渡すのが基本です。このメソッドを使うことで、ローカルやWeb上にある画像をプロット領域内に簡単に配置できます。実装の手順output_file()でデフォルトの出力先を設定し、show()を呼び出したときに結果がHTMLファイルとして保存されるようにします。figure()でプロット用の新しいFigure(図)オブジェクトを作成します。image_url()メソッドで、指定したURLから読み込んだ画像を描画します。show()を呼び出して、Bokehオブジェクトやアプリケーション