Pythonのクラス属性を参照する方法をわかりやすく解説
クラスオブジェクトがサポートする2つの操作
Pythonの公式ドキュメントによると、クラスオブジェクトは「属性参照」と「インスタンス化」という2種類の操作をサポートしています。本記事では、このうち属性参照の仕組みについて詳しく見ていきます。
属性参照の基本構文
属性参照には、Pythonにおけるすべての属性アクセスで共通して使われる標準的な構文 obj.name を使用します。
有効な属性名として扱えるのは、クラスオブジェクトが作成された時点でクラスの名前空間に存在していたすべての名前です。
具体例:シンプルなクラス定義
たとえば、次のようなクラス定義があったとします。
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'この場合、MyClass.i と MyClass.f はどちらも有効な属性参照です。MyClass.i は整数(12345)を返し、MyClass.f は関数オブジェクトを返します。
属性への代入と変更
クラス属性には値を代入することも可能です。つまり、代入によって MyClass.i の値を後から変更できます。
__doc__ 属性について
さらに、__doc__ も有効な属性の一つです。この属性はクラスに属するドキュメンテーション文字列(docstring)を返します。上記の例では、「A simple example class」という文字列が返されます。
まとめ
- クラス属性へのアクセスは
obj.nameという標準構文で行う - 有効な属性名は、クラス定義時に名前空間に存在した名前に限られる
- クラス属性は代入によって値を変更できる
__doc__を使えばクラスのdocstringを取得できる
-
Python関数で引数を参照渡しする方法を徹底解説
Python関数で引数を参照渡しする方法 PythonにはC++のような明示的なポインタや参照渡しの構文はありませんが、実際には「オブジェクトへの参照」が引数として渡される仕組み(オブジェクト参照渡し)を採用しています。特にリストや辞書といったミュータブル(変更可能)なオブジェクトを関数に渡すと、関数内での変更が呼び出し元の変数にも反映されます。 サンプルコード def modify_list(lst): lst.append(20) # 関数内でリストを変更する a = [10] modify_list(a) # 変数aをそのまま渡す(参照が渡される) b = [10,
-
Pythonの関数は引数を参照渡しする?id()による検証方法を解説
Pythonの関数における引数の受け渡しの仕組みPythonでは、関数の引数は常に参照渡し(正確には「オブジェクトへの参照を受け渡す」方式)で行われます。つまり、関数に渡されるのはオブジェクトそのものではなく、そのオブジェクトへの参照です。この挙動は、実際の引数・仮引数・戻り値の各オブジェクトに対してid()を確認することで簡単に検証できます。検証用サンプルコードdef foo(x): print (id of received argument,id(x)) x.append(20) return x a = [10] print (id of a