Pythonのdelattr()関数とは?オブジェクトから属性を削除する方法を解説
Pythonのdelattr()関数とは
delattr()は、オブジェクトが許可している場合に、そのオブジェクトから指定した属性を削除するPythonの組み込み関数です。クラスやインスタンスから不要になった属性を実行時に動的に取り外したい場合に活用できます。なお、delattr(object, 'name') は「del object.name」というdel文と同等の動作をします。
構文
delattr()の構文は以下のとおりです。
delattr(object, name)
パラメータ
delattr()メソッドは2つの引数を受け取ります。
- object:属性を削除する対象のオブジェクト(クラスまたはインスタンス)
- name:削除したい属性名を表す文字列
戻り値
delattr()は戻り値を持ちません(Noneを返します)。処理としては、対象のオブジェクトが許可していれば、該当する属性を単純に削除するだけです。
使用例
次の例では、Coordinateクラスから属性zを削除しています。
class Coordinate:
x = 12
y = -7
z = 0
point1 = Coordinate()
print('x = ', point1.x)
print('y = ', point1.y)
print('z = ', point1.z)
delattr(Coordinate, 'z')
print('--z属性を削除した後--')
print('x = ', point1.x)
print('y = ', point1.y)
# 属性が存在しないためエラーが発生する
print('z = ', point1.z)実行結果
このコードを実行すると、次のような出力が得られます。
x = 12
y = -7
z = 0
--z属性を削除した後--
x = 12
y = -7
Traceback (most recent call last):
File "example.py", line 15, in <module>
print('z = ', point1.z)
AttributeError: 'Coordinate' object has no attribute 'z'このように、delattr(Coordinate, 'z')によってクラスから属性zが削除されると、それ以降にzへアクセスしようとした時点でAttributeErrorが発生します。削除済みの属性にアクセスしないよう、コード内で事前に存在確認(hasattr()など)を行うのが安全です。
-
Pythonの名前空間とは?仕組みとスコープの関係をわかりやすく解説
Pythonにおける名前空間の基本名前空間(namespace)とは、変数名とオブジェクトを対応付ける仕組みであり、スコープ(名前の有効範囲)を実現するための基盤となるものです。Pythonでは、パッケージ、モジュール、クラス、関数、メソッドなど、それぞれが独自の「名前空間」を持ち、その中で変数名が解決されます。名前空間の生成と破棄関数やモジュール、パッケージが評価されて実行が始まると、そのための新しい名前空間が作成されます。これは「評価コンテキスト」と捉えると理解しやすいでしょう。そして、関数などの実行が終了すると、その名前空間は破棄され、そこに含まれていた変数も一緒に消えます。さらに、ロー
-
Pythonの「%」演算子とは?文字列フォーマットの基本と使い方を解説
Pythonの「%」演算子の役割 Pythonにおける「%(パーセント)」は、文字列フォーマット演算子(補間演算子)として機能します。「format % values」という形式で記述すると、フォーマット文字列内の変換指定子が、values側の要素によって置き換えられます。この仕組みは、C言語のsprintf()関数とよく似ています。 基本的な使い方:文字列の埋め込み 最もシンプルな例は、文字列の中に変数の値を埋め込むケースです。 >>> lang = Python >>> print %s is awesome! % lang Python is awe