属性を決して削除しないクラス、つまりdel myClass.immortal_attr
を実装しています。ユーザーがこれを実行しようとしたときに発生させることができる例外は何ですか?Python Deleterを実装する際に発生する例外
組み込みの例外は私には明らかではありませんでしたが、カスタムExceptionクラスを実装する必要があるようには感じられません。 DeleteError
のようなものは、かなり普遍的なニーズのように思えます。
属性を決して削除しないクラス、つまりdel myClass.immortal_attr
を実装しています。ユーザーがこれを実行しようとしたときに発生させることができる例外は何ですか?Python Deleterを実装する際に発生する例外
組み込みの例外は私には明らかではありませんでしたが、カスタムExceptionクラスを実装する必要があるようには感じられません。 DeleteError
のようなものは、かなり普遍的なニーズのように思えます。
はレイズだけのPythonに付属しているタイプのようなAttributeError
は、実行します。
>>> del (1).bit_length
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object attribute 'bit_length' is read-only
>>> class Foo(object):
... @property
... def x(self):
... return 3
...
>>> del Foo().x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't delete attribute
ところで、property
であなたの属性を実装するあなたが何をしようとして達成するための良い方法かもしれません。
私はこれが道だと思ったが、私のテストケースにはバグがあった...と思っていたのですが... – salotz
私はAttributeError
があなたがしようとしているものでうまくいくと思っていますが、自分のやりたいことに合わない場合は独自のカスタム例外を作成することもできます。
このサイトでは、カスタム例外を作成する方法を理解するのに役立つかもしれません。 https://www.codementor.io/python/tutorial/how-to-write-python-custom-exceptions
[delリファレンス](https://docs.python.org/3/library/exceptions.html#AttributeError)を削除していますか? – salotz
Hmm。私は正直に肯定的ではない。あなたは '(オブジェクト).__ del __(自己)'を使っていますか?そのためのドキュメントを見ると、例外は完全に無視されているように見えます。 [Documentation](https://docs.python.org/2/reference/datamodel.html#object.__del__) – Colby
@Colby: 'del'と' __del__'は無関係です。 – user2357112
なぜ、AttributeErrorはありませんか? –
または単に 'RuntimeError'。 –
それ以外のものが適切でない場合、RuntimeErrorは私の選択です。これは私が確信していないものです。 – salotz