0

より高いレベルの抽象化クラスへのサービスとして登録する一連のクラスがあります。高レベルクラスには、 init argsなどに基づいて低レベルクラスを取得する関数があります。これは凶暴に聞こえますか?また、これは何と呼ばれていますか?私はそれをファクトリー関数/クラスと呼んでいますが、実際にはわかりません(これにより、Googleのベストプラクティスが難しくなります)。

4

1 に答える 1

2

これは「メタクラスプログラミング」と呼ばれます。Pythonの最近のバージョンでは、__new__()静的メソッドを定義し、適切なタイプのオブジェクトを返すことで実装されています。

class C(object):
  def __new__(cls, val):
    if val == 5:
      return 'five'
    else:
      return super(C, cls).__new__(cls)

c1 = C(3)
print c1
c2 = C(5)
print c2
于 2010-10-10T15:44:24.010 に答える