特定のメソッドがアクセスされた場合にアクセスを削除するか、エラーをスローするクラスを作成したいと思います。この動作は、クラスのインスタンス化時に設定された変数によって条件付けられる必要があります。
したがって、コードでは次のようなものが必要です。
class NewClass:
def __init__(self, has_non_available_method):
self.has_non_available_method = has_non_available_method
def some_method(self):
if self.has_non_available_method:
raise SomeError()
これは問題ありませんが、このようなメソッドがいくつか必要な場合は、これらの 2 行をすべてのメソッドにコピー アンド ペーストする必要があります。これは「あまり洗練されていないように見えます」ので、「より良い」/DRY アプローチが存在するかどうかを調べたいと思います。
デコレーターの使用を検討しましたが、デコレーターはクラスの実行時に実行されるため、has_non_available_methodその時点で属性 (この例では) が設定されないため、このタスクには適していないようです。