为什么Python不完全面向对象?

我想知道为什么Python不是完全面向对象的。 例如,它不支持私人,公共,受保护的访问级别修改器。

这有什么优点和缺点? 通过这些expression式,Python适用于哪些应用程序(桌面,科学,Web或其他)?

Python不支持强封装 ,这只是与“面向对象”这个术语相关的许多function之一。

答案只是哲学。 Guido不喜欢隐藏的东西,Python社区的许多人都同意他的观点。

圭多曾经说过,“我们都在这里同意大人”。 以下是很久以前的更长的解释: http : //mail.python.org/pipermail/tutor/2003-October/025932.html

有一个协议,强调私人的意思,你不应该使用它们。 除非你知道你在做什么,你真的想要。

该链接还提到另一种方式来把它放在Perl的情况下:

“一个Perl模块宁愿你留在客厅里
因为你没有被邀请,不是因为它有一把猎枪。“

基于类的编程不需要访问修饰符(public,private,protected等)。 它们只是一个function,就像多重inheritance一样 。

我相信Python更多的是一个非常实用,实用的语言。

为开发者提供价值的概念被放入,没有太多考虑像“正确的OOdevise”和东西的神学概念。 对于有实际工作要做的人来说,这是一种语言。

我认为Python适用于各种环境,但由于缺乏单一的框架,桌面有点困难。 对于所有的应用程序来说,使用一个框架是很方便的,比如用于计算的NumPy,用于网页的Twisted或者Django,以及用于桌面的WxWidgets或者其他。

什么是完全面向对象? 艾伦·凯说:“其实我已经做了”面向对象“这个术语,我可以告诉你我没有考虑C ++。” 不可否认的是,他可能也没有考虑到python,但值得注意的是,Smalltalk也是按照惯例保护class级,没有授权。

我认为Python被devise成一个混合。 您可以使用面向对象或function样式进行编写。

面向对象的标志是抽象,封装,inheritance和多态。 Python中缺less哪些内容?

面向对象是一个连续统一体。 我们可以说Smalltalk是纯粹的纯粹的,而其他所有的都在规模上占据不同的地方。

没有人能说100%纯正的价值是什么。 可以用不包含Smalltalk,Python的语言编写非常好的面向对象的代码。

Python在所有这些领域是有用的:科学(NumPy),networking(Django)和桌面。

如果一个语言没有原始的数据types,那么它就被称为全面的目标导向。 我们需要构build每种数据types。