4

<ChildClass>次のサンプルでは、​​スーパーの反対のように機能する代わりに私が置くことができる魔法の言葉はありますか?

class Parent(object):

    def __init__(self):
        print <ChildClass>.x

class someChild(Parent):
    x = 10

ばかげた例ですが、私の意図を示しています。ちなみに、someChild子クラスが多いので使用できません。

私が考えることができる唯一の解決策は、Parentのコンストラクターをそれ自体への参照で呼び出す(またはxを渡す)すべての子クラスにコンストラクターを含めることですが、各子にコンストラクターを持たないようにします。

4

2 に答える 2

7

使用するだけで何が問題になりself.xますか?

class Parent(object):
    x = None  # default value
    def __init__(self):
        print self.x

class someChild(Parent):
    x = 10
    def __init__(self):
        Parent.__init__(self)

class otherChild(Parent):
    x = 20
    def __init__(self):
        Parent.__init__(self)

a = someChild()
# output: 10
b = otherChild()
# output: 20

(上記の例では)Parentクラス属性もある場合でも、これがどのように機能するかに注意してください。子の属性が優先されます。xNone

于 2012-08-24T05:24:37.713 に答える
0

self.xxインスタンスに属性がない場合に機能します。

type(self).xインスタンスにx属性があり、クラスの値が必要な場合は、基本的にインスタンスをスキップします。

于 2012-08-24T05:36:18.940 に答える