何时可以在Python中使用父类变量?

时间:2016-07-06 05:49:24

标签: python inheritance

class frozen(object) :
    isFrozen = False
    print 'In base'

class layer(frozen):
    print isFrozen

我试图理解Python中的继承概念,上面的行是一个愚蠢的例子。当我尝试创建图层类的对象时,父类中的“print”语句正在工作。但它在子类的“print”语句中抛出错误。说“isFrozen”没有定义。

但是,如果我在子类中注释掉“print”语句,我可以创建子类的对象并将“isFrozen”作为“layerObject.isFrozen”访问。

那么,有人可以在这里指出我的误解吗?

1 个答案:

答案 0 :(得分:0)

类主体提供了一个名称空间,并且在读取模块时会解析类(与函数不同)(导入时间)。您的问题是您在没有命名空间的情况下调用isFrozen类的frozen。另外,为了充分利用继承,您需要一个实际的类实例,通常称为self

class Frozen(object):
    isFrozen = False
    def __init__(self):
      print Frozen.isFrozen
      print "From Base"


class Layer(Frozen):

    def __init__(self):
      print self.isFrozen ##this is defined by the parent
      print "From subclass"
      self.isFrozen = True
      print self.isFrozen


In [7]: test_class = Layer()
False
From subclass
True

In [8]: test_class.isFrozen
Out[8]: True

此处也建议使用RTFM。