Pythonでクラスの属性を定義・確認する方法をわかりやすく解説
クラスの属性とは
Pythonでは、ほぼすべてのものがオブジェクトとして扱われます。そして、すべてのオブジェクトには属性(アトリビュート)とメソッドが備わっています。つまり、属性はPythonプログラミングにおいて非常に基礎的かつ重要な概念なのです。
クラスとは、類似したオブジェクトをまとめて扱うための仕組みであり、クラス自体にも属性を持ちます。ここで注意したいのが、クラス属性とインスタンス属性の違いです。クラス属性は、そのクラスから生成されたすべてのインスタンス間で共有されます。しかし、その逆(インスタンス属性が他のインスタンスやクラスに共有される)は成り立ちません。
dir関数でオブジェクトの属性を確認する
Pythonには、オブジェクトが持つ属性の一覧を取得できる組み込み関数「dir」が用意されています。文字列、整数、タプルなど、基本的なデータ型に対して実際に試してみましょう。
>>> s = 'abc' >>> len(dir(s)) 71 >>> dir(s)[:5] ['__add__', '__class__', '__contains__', '__delattr__', '__doc__'] >>> i = 123 >>> len(dir(i)) 64 >>> dir(i)[:5] ['__abs__', '__add__', '__and__', '__class__', '__cmp__'] >>> t = (1,2,3) >>> len(dir(t)) 32 >>> dir(t)[:5] ['__add__', '__class__', '__contains__', '__delattr__', '__doc__']
この実行結果からわかるように、文字列なら71個、整数なら64個、タプルなら32個もの属性が、あらかじめ用意されていることが確認できます。これは、Pythonの基本データ型でさえ非常に多くの属性を持っていることを意味します。
出力が長くなりすぎる場合は、スライスを使って「dir(s)[:5]」のように表示件数を絞ると、先頭の5つの属性だけを手軽に確認できます。ダンダー(__)で囲まれた名前は特殊メソッドと呼ばれ、オブジェクトの内部動作を担う重要な属性です。
-
Pythonで辞書の中に辞書を定義する方法(ネスト構造の作り方)
ネストした辞書とはPythonの辞書(dict)オブジェクトはミュータブル(変更可能)です。この特性により、ある辞書オブジェクトを別の辞書の「値」として格納することができます。つまり、キーに関連付けられた値として別の辞書を定義することで、ネストした(入れ子になった)辞書を作成できるのです。ネストした辞書の定義例以下の例では、学生ごとの情報(名前・年齢・科目・GPA)を、それぞれ独立した辞書として保持し、それらを外側の辞書の値にしています。>>> students = { student1: {name: Raaj, age: 23, subjects: [Phy, C
-
Pythonで関数を定義する方法!defキーワードの基本構文と使い方を解説
Pythonの関数とは?関数(function)とは、名前を指定して呼び出すことができる、ひとまとまりのコードのことです。関数には処理の対象となるデータ(引数・パラメータ)を渡すことができ、必要に応じて結果(戻り値)を返すことも可能です。なお、関数に渡されるデータはすべて明示的に指定する必要があります。関数を定義する基本構文def function_name(): # 実行したい処理をここに書くPythonでは、defキーワードに続けて半角スペース、関数名、括弧「()」、そしてコロン「:」を記述することで関数を定義します。その次の行には、インデント