私はエディタがリファクタリングでより良くなることを期待して関数アノテーションを使用しようとしています。しかし、私は次の問題を抱えています:抽象クラスのサブクラスのための関数アノテーション
私は抽象基底クラスのアルゴリズムを持っています。
class Algorithm(metaclass=ABCMeta):
def __init__(self):
self.foo = 'bar'
Iは、入力foo_algorithmアルゴリズムのサブクラスのいずれかのインスタンスとすることができるアルゴリズム
def get_foo(foo_algorithm):
return foo_algoritm.foo
のサブクラスのインスタンスを使用する機能を有しています。この入力にどのように注釈を付けるべきですか?私はラインに沿って何かを探しています:
def get_foo(foo_algorithm: subclassof(Algorithm)):
return foo_algoritm.foo
私はこれを行う正しい方法を見つけることができませんでした。
あなたの質問は少し不明です。 'get_foo'が' Algorithm'のサブクラスの*インスタンス*ではなく、 'Algorithm'の*サブクラス*を受け入れるかのようにあなたは話しています。あなたのコードはそうでないと言います。 '.foo'は' __init__'メソッドで設定されているので、インスタンス属性でなければなりません。クラスオブジェクトには存在しません。 –
良い点が編集されました。実際に私が使用しているインスタンス化されたサブクラスです。 – Skirrebattie
まあ、今私はあなたのどちらかをカバーしています。 –