【发布时间】:2010-07-24 13:47:24
【问题描述】:
我想知道为什么 Python 不是完全面向对象的。例如,它不支持私有、公共、受保护的访问级别修饰符。
这样做的优点和缺点是什么?通过这些表述,Python 适用于哪些应用程序(桌面、科学、Web 或其他)?
【问题讨论】:
-
Python 适用于几乎所有不依赖于硬数字运算的东西,但即便如此,您也可以用 C 编写这些部分。封装在动态类型语言中并不是那么有用。它只帮助编译器,即使在 Java 中,您也可以(有时需要)通过反射来规避它。恕我直言,封装并没有增加任何安全性,它只是让您感觉有更多的安全性。
-
@extraneon:不,只是为了知道。 @Wetzel:我同意你的观点“封装在动态类型语言中没那么有用”。
-
Python 是“完全面向对象的”。 “面向对象”是一个创造的术语,而不是由某种语言(例如 Java)定义的。这是一个计算机理论。 Python 只是以不同的方式做这件事,但有充分的理由。诸如将属性设为私有的能力等“特性”与语言的实用性无关,而与使用该语言时对良好实践的微妙执行有关。
-
@orokusaki 我知道已经 5 年了,但是......“使属性私有化的能力”是计算机理论所说的封装,并且是 OO 的三大支柱之一。现在:Python 没有“private”仍然是真的吗,或者这已经改变了吗?
-
@ТаняТ。很抱歉不得不通知你,你的教授可能让你失望了。请查看en.wikipedia.org/wiki/… 并注意关键词“两个相关但不同的点之一”,就在最接近该页面顶部的两个项目符号之前。