パラメータx
を渡し、新しいクラスC
を返す関数を作成しようとしています。 C
は、固定基本クラスA
のサブクラスである必要があります。追加するのは1つだけです。特定のクラス属性が追加され、x
に設定されています。言い換えればpython 3:class "template"(パラメータ化されたクラスを返す関数)
:
class C(A):
C.p = x # x is the parameter passed to the factory function
が行うのは、これは使いやすいですか?私が知っておくべき問題がありますか?
ありがとう、私は私の質問から 'factory'への参照を削除しました。この関数を使用すると、名前の競合に問題がありますか、関数が復帰するまでに 'C 'を忘れてしまいますか? – max
私が上記のコメントで言ったように、名前が記録されている* 2つの場所があります。 Glennの例では、名前 "C"はクラスの内部名(クラスの永続プロパティ)とローカル変数名 "C"の両方です。関数が戻るとき、ローカル変数 "C"は忘れられますが、クラスは内部名 "C"を保持します。しかし、私が上で述べたように、内部クラス名の名前の衝突はないので、これは問題ではありません。 – mgiuca
クラス自体は単なるオブジェクトです。それは 'C = 1; Cを返す。 (名前 "C"はオブジェクトに 'C .__ name__'として格納されていますが、デバッグや化粧の目的にのみ使用されます) –