定期的に、Pythonで完全に空のオブジェクトを作成したいと思います。基本的に、キーが属性であるディクテーションが必要です。Python 2.xでは、次のような古いスタイルの型を作成できます。
class Empty: pass
__doc__
これにより、2つの属性(および)のみを持つタイプが作成されます__module__
。Python 3.xでは、すべてが新しいスタイルのクラスであるため、18個の属性を取得します。
私の現在の状況では、単体テスト内でモンキーパッチを適用する必要があるタイプを指定できるクラスがあります。パッチが適用されると、モックアウトされた各タイプの名前を持つ属性を持つタイプを作成しています。これは、私の現在の実装が行っていることとほぼ同じです。
class EmptyType: pass
...
mocks = EmptyType()
for mock_name, mock in patches:
setattr(mocks, mock_name, mock)
EmptyType
私の懸念は、誰かがプライベートメンバーをモックしている場合、オブジェクト内の名前との名前の衝突に遭遇する可能性があることです。そのため、属性をできるだけ少なくしたいと思いますEmptyType
。そして、特に名前が有効な識別子でなければならないことがわかっている場合mocks.find_users
は、言うよりも言うのがはるかに簡単です。mocks["find_users"]
今のところ、デフォルトの名前以外に、モックに異なる名前を付ける機能を提供しています。それでも、そもそも混乱を招くエラーを回避するのは良いことです。JavaScriptでほとんど空の型を作成するのは非常に簡単で、Pythonにも似たようなものがあることを望んでいました。なぜなら、それらの良い使い方を見つけ続けているからです。