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

65 投票
7 回答
87093 浏览
提问于 2025-04-16 01:46

我想了解为什么Python不是完全面向对象的编程语言。比如说,它不支持私有、公共和保护这些访问权限的设置。

这样做有什么好处和坏处呢?根据这些特点,Python适合用来做哪些应用呢(比如桌面应用、科学计算、网页开发或者其他)?

7 个回答

14

访问修饰符(比如 public、private、protected 等)在基于类的编程中并不是必须的。它们只是一种功能,就像多重继承一样。

49

Guido 曾经说过“我们都是成年人,都是同意的”。这里有个更长的解释,来自很久以前:http://mail.python.org/pipermail/tutor/2003-October/025932.html

大家有个共识,就是下划线开头的东西代表私有的内容,最好不要去用它们。除非你知道自己在干什么,并且真的想这么做。

这个链接还提到了一种在 Perl 语言中的说法:

“一个 Perl 模块希望你不要进它的客厅
因为你没有被邀请,而不是因为它有把枪。”

105

Python不支持严格的封装,这只是与“面向对象”这个词相关的众多特性之一。

原因其实很简单,这是一种理念。Guido(Python的创始人)不喜欢把东西藏起来,很多Python社区的人也赞同他的看法。

撰写回答