ベースクラス内のサブクラス内の変数を、他のサブクラスに影響を与えずに動的に作成/設定できますか?ベースクラス内からサブクラスの変数/属性を設定する
たとえば、ここにこのコードを取る:そのコードで
class Base:
@classmethod
def __init__(cls,v):
cls.v=v
class sub1(Base):
Base.__init__(1)
class sub2(Base):
Base.__init__(5)
、sub1
を作成するときに、そのv
属性が1
に等しいです。しかし、sub2
を作成した場合、属性はsub1
とsub2
の両方とも5
になります。なぜこれがあるのか知るかもしれないと思う。私は、基本クラスの@classmethod
がサブクラスの属性を実際に設定するのではなく、それ自身の属性を設定していると仮定します。その属性はサブクラスで継承されます。私の質問は:どのように継承される基本クラスの属性ではなく、サブクラスの属性を設定するために、この種の継承を使用することができます。
つまり、サブクラスに固有で、単純にグローバルに継承されていないサブクラスで属性を設定するためには、可能であれば(あるいは少なくとも単純なものも)同様の構造を使用できるようにしたいと思います。ベースクラスから。
これも可能ですか?
はあなただけで行うことはできませんいくつかの理由がありますか?クラスステートメントのボディ内の割り当ては、メソッドの外で既にクラス属性を定義しています。それを行うための特別な方法は必要ありません。 '__init__'を' classmethod'にすると、メタクラスが本当に好きなように聞こえますが、クラス属性を設定したいのであれば、それは大過剰です。 – ShadowRanger