__subclasses__
特定のクラスのサブクラスのリストにアクセスする場合は、次のメソッドを使用できます。
>>> class MyClass(object):
... pass
...
>>> class Subclass1(MyClass):
... pass
...
>>> class Subclass2(MyClass):
... pass
...
>>> MyClass.__subclasses__()
[<class '__main__.Subclass1'>, <class '__main__.Subclass2'>]
既存のサブクラスをすでに知っている場合は、それらを直接インスタンス化できます。
>>> class MyClass(object):
... def getInstance(self):
... return Subclass1()
...
>>> class Subclass1(MyClass): pass
...
>>> MyClass().getInstance()
<__main__.Subclass1 object at 0x1e72d10>
とにかく、あなたはシングルトンパターンを実装しようとしていると思います。その場合、メソッドをまったく使用すべきではないと思いますgetInstance
。以下を使用して実装するだけです。
- モジュールはシングルトンであるため、モジュール
__new__
インスタンスがすでに存在する場合は、古いインスタンスを返すように再実装します
- いくつかのメタクラスを使用する
そして、これを行う方法は他にもたくさんあります。
これが目的でない場合は、スーパークラスは通常サブクラスについて知る必要がないため、設計を変更する必要があります。