class A:
#def __init__(self):
# print('已经打开A')
print('1111')
class B(A):
def __init__(self):
print('已经打开B')
print('2222')
a=B()
(1)我的理解是当定义了一个类的实例时,会优先自动执行—init—方法里的内容,但是这个程序输出时,B中的init是再输出 2222 之后才输出,难道我理解错了吗?
(2)当我把A中的#号去掉,pycharm自动给B中的init加了高亮,意思是B中的init错了,难道init不能存在多个吗??
新手不易,弱弱地求助下
(1)__init__在实例化的时候才会被调用,而print(''2222')在类被调用,所以先是打印了“2222”,再打印'已经打开B'。而且函数放在哪都行,所以你可以把他两位置换一换
(2)你的B类是继承了A类的,你又在B中定义了一个__init__方法,也就是说你重写了父类A的__init__方法,所以不会再执行A的__init__方法,如果想要调用A的__init__方法,你可以写A.__init__(self)
print('2222') 没有再函数里面。所以载入类B就执行了,在任何B的实例化之前。
在B的__init__里面调用 super().__init__(self)