私は次のコードを持っています:
class EntityBase (object) :
__entity__ = None
def __init__ (self) :
pass
def entity (name) :
class Entity (EntityBase) :
__entity__ = name
def __init__ (self) :
pass
return Entity
class Smth (entity ("SMTH")) :
def __init__ (self, a, b) :
self.a = a
self.b = b
# added after few comments -->
def factory (tag) :
for entity in EntityBase.__subclasses__ () :
if entity.__entity__ == tag :
return entity.__subclasses__ ()[0]
raise FactoryError (tag, "Unknown entity")
s = factory ("SMTH") (1, 2)
print (s.a, s.b)
# <--
これで、ファクトリでEntityBaseのすべてのサブクラスを取得し、「SMTH」の具体的なサブクラスを見つけて作成できます。
これは有効なアプローチですか、それとも私は何かを誤解して間違っているのでしょうか?