Pythonでオブジェクト内のオブジェクトにアクセスする方法
Pythonでは、あるオブジェクトの属性として別のオブジェクトを保持できます。このように入れ子になった(ネストされた)オブジェクトにアクセスするには、ドット(.)記法を連結して オブジェクト.内部オブジェクト.属性 の形式で指定します。
サンプルコード
以下の例では、クラス P のインスタンスが、クラス Q のインスタンスを属性 w として持っています。さらに、その Q インスタンスはリスト list を保持しています。
class P:
def __init__(self):
self.w = Q()
class Q:
def __init__(self):
self.list = [3, 4, 5]
def function(self):
self.list[2] = 7
y = P()
f = [y]
print(f[0].w.function())
print(f[0].w.list)
実行結果
None [3, 4, 7]
解説
オブジェクトへのアクセスは、次の順序でたどられます。
f[0]:リストfの先頭要素、すなわちPのインスタンスyf[0].w:Pインスタンスが保持するQのインスタンスf[0].w.list:Qインスタンスが保持するリストf[0].w.function():Qインスタンスのメソッド呼び出し
最初の出力が None になっているのは、メソッド function() に return 文がないためです。Pythonでは戻り値を明示しないメソッドは自動的に None を返します。ただし、メソッド自体は正常に実行されており、リストの3番目の要素が 5 から 7 に更新されています。そのため、2番目の出力は [3, 4, 7] となります。
-
Pythonのポリモーフィズム(多態性)とは?演算子・組み込み関数・メソッドでの実例付き解説
ポリモーフィズム(多態性)とは「複数の形を持つこと」を意味するオブジェクト指向プログラミングの重要な概念です。Pythonでは、同じ演算子や関数が入力に応じて異なる振る舞いをする様子を、至るところで見ることができます。また、異なるクラスに同名のメソッドを持たせることで、コードの再利用性が高まり、プログラム全体の複雑さを抑えることができます。さらに、ポリモーフィズムは継承とも密接な関係があります。この記事では、具体的なコード例を通じて、Pythonにおけるポリモーフィズムの基本をわかりやすく解説します。演算子におけるポリモーフィズム「+」演算子は、2つの入力を受け取り、その種類に応じて異なる結果
-
Pythonのファイルオブジェクトとは?open関数によるファイル操作の基本を徹底解説
Pythonでは、ファイルを読み書きする際に特別なライブラリをインポートする必要はありません。ファイル操作は言語にネイティブに組み込まれているためです。 まず最初に行うのは、組み込み関数 open() を使ってファイルオブジェクトを取得することです。open() 関数はファイルを開き、ファイルオブジェクトを返します。このファイルオブジェクトには、開いたファイルから情報を取得したり、内容を操作したりするためのメソッドや属性が含まれています。 ファイルとは何か? ファイル操作を行う前に、「ファイルとは何か」を理解しておきましょう。ファイルとは、関連する情報を保存するためにディスク上に確保された「名