在下面的示例中,是否有一个神奇的词我可以代替<ChildClass>
,它的作用与超级相反?
class Parent(object):
def __init__(self):
print <ChildClass>.x
class someChild(Parent):
x = 10
这是一个愚蠢的例子,但它表明了我的意图。顺便说一句,使用someChild
将不起作用,因为有许多子类。
我能想到的唯一解决方案是在每个子类中都有一个构造函数,它调用Parent的构造函数并引用它自己(甚至传递x),但我想避免在构造函数中使用每个孩子。
答案 0 :(得分: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
也具有类属性x
(上例中为None
),这种情况仍然有效 - 孩子优先。
答案 1 :(得分:0)
self.x
属性,则 x
将起作用。
type(self).x
如果实例具有x
属性,并且您想要类的值,实际上是跳过实例。