Python 即使我使用了super(),也会覆盖uuu init_uuuuu()方法。为什么?

Python 即使我使用了super(),也会覆盖uuu init_uuuuu()方法。为什么?,python,inheritance,super,Python,Inheritance,Super,正如在标题中一样,我在继承类\uuuuu init\uuuu方法中启动了超级类\uuuu init\uuu方法,但它仍然被重写,或者至少我认为它被重写了。我希望self.x=x也在继承类中工作 Abs类(ABC): 定义初始化(self,x:int=1,*args,**kwargs)->无: super() self.x=x @抽象方法 def foo(self): 通过 Con级(Abs): 定义初始化(self,x:int=1,*args,**kwargs)->无: super() def

正如在标题中一样,我在继承类
\uuuuu init\uuuu
方法中启动了超级类
\uuuu init\uuu
方法,但它仍然被重写,或者至少我认为它被重写了。我希望self.x=x也在继承类中工作

Abs类(ABC):
定义初始化(self,x:int=1,*args,**kwargs)->无:
super()
self.x=x
@抽象方法
def foo(self):
通过
Con级(Abs):
定义初始化(self,x:int=1,*args,**kwargs)->无:
super()
def foo(self):
打印(self.x)
obj=Con(x=4)

obj.foo()#这是因为在超级调用中没有传递
x
on。应该是:

def __init__(self, x: int = 1, *args, **kwargs) -> None:
    super().__init__(x, *args, **kwargs)

但是,请注意,此方法完全没有意义。只有当您想做一些与超类版本不同的事情时,才应该重写方法。在这种情况下,你不会;您应该完全从Con中删除该方法。

您的问题确实不清楚。这里怎么了?无论如何,您的init方法都是相同的;把这个放在Con中没有任何意义。你能举一个不起作用的行为的例子吗(例如,从python终端)?