代码之家  ›  专栏  ›  技术社区  ›  Mahdi Amrollahi

为什么Python不完全面向对象[[关闭]

  •  50
  • Mahdi Amrollahi  · 技术社区  · 14 年前

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

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

    7 回复  |  直到 7 年前
        1
  •  93
  •   Marcelo Cantos    14 年前

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

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

        2
  •  44
  •   viraptor    14 年前

    http://mail.python.org/pipermail/tutor/2003-October/025932.html

    该链接还提到了另一种将其用于Perl的方法:

    “Perl模块希望您
    因为你没被邀请,不是吗 因为它有一把猎枪。”

        3
  •  13
  •   Daniel Vassallo    14 年前

    不需要访问修饰符(public、private、protected等) class-based programming multiple inheritance .

        4
  •  3
  •   duffymo    14 年前

    我认为Python被设计成一个混合体。您可以使用面向对象或函数样式进行编写。

    面向对象的特点是抽象、封装、继承和多态性。Python中缺少哪些?

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

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

    Python在所有这些领域都很有用:科学(NumPy)、web(Django)和桌面。

        5
  •  2
  •   extraneon    14 年前

    我相信Python是一种非常实用的语言。

    为开发人员提供价值的概念被放进去了,而没有过多地考虑诸如“适当的OO设计”之类的神学概念。这是一种为有真正工作要做的人准备的语言。

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

        6
  •  2
  •   deinst    14 年前

    什么是完全面向对象?Alan Kay说:“事实上,我提出了“面向对象”这个术语,我可以告诉你我没有C++。诚然,他可能也没有想到python,但值得注意的是,Smalltalk也通过约定保护类,而不是强制要求。

        7
  •  -5
  •   mbinette    12 年前

    如果一种语言没有原始的数据类型,它就被称为完全面向对象的。我们需要构造的每个数据类型。