class A:
def __init__(self):
self.i = 0
def demo(self):
self.a=1
class B(A):
def __init__(self, j = 0):
super().__init__()
self.j = j
print(self.i)
self.demo()
def demo(self):
print(self.a)
def main():
b = B()
print(b.i)
print(b.j)
main()为什么我不能访问self。b类中的a会以self作为变量的前缀。将使它成为一个实例变量,谢谢
发布于 2016-01-03 07:14:47
当为这两个类包括一个demo方法时,最近定义的一个隐藏了其他类。由于您在定义B之后定义了A,但在调用A中的任何方法之前,demo将尝试访问从未定义过的变量。您应该在A中调用A(可能在__init__中),或者将B中的demo更改为惟一的名称,这将允许您访问这两种方法(可能是最好的方法,因为它们做不同的事情,并且希望同时使用这两种方法)。
发布于 2016-01-03 07:11:51
因为您在demo上覆盖了B class方法。
如果要访问self.a,请将其添加到A类的__init__方法或调用父级demo方法,如下所示:
def demo(self):
super().demo()
print(self.a)发布于 2016-01-03 07:08:15
因为实例变量b不是在__init__ of A中启动的。
https://stackoverflow.com/questions/34574129
复制相似问题