私は、約 9 ~ 10 個のクラスで構成される Python システムを使用しており、そのすべてがファット ダック タイプのインターフェイスのほとんどを実装しており、モジュールの大規模なコレクションによって互換的に使用されています。責任の分離に続いて、クラスをコアの明示的な (つまり ABC) インターフェイスと周辺機能にリファクタリングしようとしていますが、そのためには、コンシューマ モジュールがコアの外部でメソッドを呼び出しているときに通知できる必要があります。インターフェース。
抽象メソッドを持つ ABC があるとします。
from abc import ABCMeta, abstractmethod
class MyABC:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
これらの抽象メソッドと他のメソッドを実装するクラスもあります。
class MyClass(MyABC):
def foo(self):
pass
def bar(self):
pass
instance = MyClass()
>>> isinstance(instance, MyABC)
True
instance
メソッドdo_something
に渡すときに(この場合は )の一部であるメソッドのみを使用し、他のメソッド ( ) を使用しないようにするにはどうすればよいですか? 静的型付け言語 (C++ など) では、ABC 型のポインターを渡すことができました。メソッドへのアクセスを同様に制限するPythonで利用可能なある種のラッパーはありますか?MyABC
foo
bar
do_something