class dad():
dadthing = "i like pandas"
class son(dad):
print "dad and %s" % dadthing
x = son()
x
类似于我想要做的事情,当我在子类中运行时,它表示dadthing未定义,但如果我只是调用变量
print x.dadthing
它调用变量就好了。怎么了?
答案 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()