[解決済み] アサートの使用に関するベストプラクティス?
2022-03-17 02:44:47
質問
-
を使用すると、パフォーマンスやコードのメンテナンスに問題がありますか?
assert
をデバッグのためだけに使用するのではなく、標準的なコードの一部として使用しますか?です。
assert x >= 0, 'x is less than zero'
よりも良いまたは悪い
if x < 0: raise Exception, 'x is less than zero'
-
また、次のようなビジネスルールを設定する方法はありますか?
if x < 0 raise error
を使用せずに常にチェックされます。try/except/finally
ということで、もしコード中のいつでもx
が0より小さい場合、エラーが発生します。assert x < 0
を関数の先頭で使用する場合、関数内の任意の場所でx
が0より小さくなると例外が発生するのですか?
解決方法は?
関数全体でxが0より小さくなったときに自動的にエラーを投げることができるようにすること。そのためには クラス記述子 . 以下はその例です。
class LessThanZeroException(Exception):
pass
class variable(object):
def __init__(self, value=0):
self.__x = value
def __set__(self, obj, value):
if value < 0:
raise LessThanZeroException('x is less than zero')
self.__x = value
def __get__(self, obj, objType):
return self.__x
class MyClass(object):
x = variable()
>>> m = MyClass()
>>> m.x = 10
>>> m.x -= 20
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "my.py", line 7, in __set__
raise LessThanZeroException('x is less than zero')
LessThanZeroException: x is less than zero
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] 例外がスローされたことを確認するためにAssertを使用するにはどうすればよいですか?
-
[解決済み】forループを使った辞書の反復処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] Pythonの "assert "はどのように使うのですか?