Pythonのdelattr()とdel()
これらの2つの関数は、クラスから属性を削除するために使用されます。 delattr()を使用すると、属性を動的に削除できますが、del()を使用すると、属性をより効率的に明示的に削除できます。
delattr()の使用
Syntax: delattr(object_name, attribute_name) Where object name is the name of the object, instantiated form the class. Attribute_name is the name of the attribute to be deleted.
例
以下の例では、custclassという名前のクラスを検討します。属性として顧客のIDがあります。次に、customerという名前のオブジェクトとしてクラスをインスタンス化し、その属性を出力します。
class custclass: custid1 = 0 custid2 = 1 custid3 = 2 customer=custclass() print(customer.custid1) print(customer.custid2) print(customer.custid3)
出力
上記のコードを実行すると、次の結果が得られます-
0 1 2
例
次のステップでは、delattr()関数を適用してプログラムを再度実行します。今回、id3を出力する場合、属性がクラスから削除されるため、エラーが発生します。
class custclass: custid1 = 0 custid2 = 1 custid3 = 2 customer=custclass() print(customer.custid1) print(customer.custid2) delattr(custclass,'custid3') print(customer.custid3)
出力
上記のコードを実行すると、次の結果が得られます-
0 Traceback (most recent call last): 1 File "xxx.py", line 13, in print(customer.custid3) AttributeError: 'custclass' object has no attribute 'custid3'
del()の使用
Syntax: del(object_name.attribute_name) Where object name is the name of the object, instantiated form the class. Attribute_name is the name of the attribute to be deleted.
例
上記の例をdel()関数で繰り返します。 delattr()と構文が異なることに注意してください
class custclass: custid1 = 0 custid2 = 1 custid3 = 2 customer=custclass() print(customer.custid1) print(customer.custid2) del(custclass.custid3) print(customer.custid3)
出力
上記のコードを実行すると、次の結果が得られます-
0 1 Traceback (most recent call last): File "xxx.py", line 13, in print(customer.custid3) AttributeError: 'custclass' object has no attribute 'custid3'
-
==とPythonの演算子の違い。
isとequals(==)演算子はほとんど同じですが、同じではありません。 is演算子は、両方の変数が同じオブジェクトを指すかどうかを定義しますが、==記号は、2つの変数の値が同じかどうかをチェックします。 サンプルコード # Python program to # illustrate the # difference between # == and is operator # [] is an empty list list1 = [] list2 = [] list3=list1 if (list1 == list2): print(True) e
-
Python例外メッセージをキャプチャして出力する方法は?
Python例外メッセージは、以下の2つのコード例に示すように、さまざまな方法でキャプチャおよび印刷できます。最初の例では、例外オブジェクトのメッセージ属性を使用します。 例 try: a = 7/0 print float(a) except BaseException as e: print e.message 出力 integer division or modulo by zero 指定されたコードの場合、sysモジュールをインポートし、sys.exc_value属性を使用して例外メッセージをキャプチャして出力します。 例 import sys def catchEverything(