2016-10-22 64 views
-3

我有很多的经验,面向​​对象的编程与的Java在这种情况下,它总是自动调用它的超类的构造函数在继承类结构为什么蟒蛇没有做到这一点,为什么??面向对象的编程和超类的构造函数

+0

因为Python不是Java? :-D 更为严肃的说明......我认为这是一个优点,因为它允许这样的事情:如果你不想调用'super'构造函数,或者在你的类中进行一些初始化后调用它* *在调用'super'之前(这是Java不允许的,因为必须在继承类的第一行的构造函数中调用'super'构造函数......)不知道......你可以认为这是一种提供更多灵活性? – BorrajaX

+2

我会问:为什么Java会这样做?为什么? – furas

+0

Python不是Java。所有用户定义的类的所有实例基本上只是可​​以插入属性的字典。在完成任何初始化之前,所有用户定义的类的所有实例几乎完全相同;他们只是存储尚未存储的属性的地方。 – Tinwor

回答

2

正如你在评论中看到的,你的问题实际上是一种观点。请检查 __init__ as a constructor?

我想说初始化是不是一个真正的构造,至少不会在你想想感。 Python的整个类模型有点不同,我想说这是有道理的。继承更强调Python中的共享方法。