字符串内部的继承变量是否未定义?

时间:2014-10-09 15:24:11

标签: python string class inheritance undefined

class dad():
    dadthing = "i like pandas"


class son(dad):
    print "dad and %s" % dadthing


x = son()
x

类似于我想要做的事情,当我在子类中运行时,它表示dadthing未定义,但如果我只是调用变量

print x.dadthing

它调用变量就好了。怎么了?

1 个答案:

答案 0 :(得分:1)

您正在尝试在班级的正文中使用打印命令。当一个类加载到内存中时,类的主体只被读取一次。

从类体中,您无法访问父类属性,如下所示:

print "dad and %s" % dadthing

因为变量 dadthing 并不存在于子类范围中。这就是解释器告诉你变量没有定义的原因。

如果要从该点访问父类的属性,可以采用以下方式:

print "dad and %s" % dad.dadthing #calling a class property

如果你尝试这个,甚至没有实例化类,你会看到变量被打印,因为你正在调用类属性,而不是实例属性。

class dad():
    dadthing = "i like pandas"


class son(dad):
    print dad.dadthing #calling a class property

您必须从__init__函数调用实例属性。 __init__方法是构造函数。完全创建对象时会调用此方法。

class dad():
    dadthing = "i like pandas"


class son(dad):
   def __init__(self):
       print "dad and %s" % self.dadthing


x = son()