为什么Python不是完全的面向对象?
我想了解为什么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社区的人也赞同他的看法。