首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python OOP与PHP OOP相比如何?

Python OOP与PHP OOP相比如何?
EN

Stack Overflow用户
提问于 2009-05-27 17:09:28
回答 6查看 3.8K关注 0票数 17

我基本上想知道Python是否像PHP一样有面向对象的缺点。PHP在最近几个版本中一直在开发他们的OOP实践。在PHP中它正在变得更好,但它仍然不是完美的。我是Python的新手,我想知道Python的OOP支持是更好还是更接近。

如果Python OOP中有一些问题没有遵循正确的OOP实践,我当然想知道这些问题。例如,据我所知,PHP不允许多重继承。

谢谢大家!

编辑:如何支持公共和私有?或者支持变量类型。我认为这些对于构建OOP软件很重要。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-27 17:12:52

我要说的是,Python的OOP支持要好得多,因为它是在语言的萌芽阶段引入的,而不是PHP,后者将OOP固定在现有的过程模型上。

票数 20
EN

Stack Overflow用户

发布于 2009-05-27 17:21:57

Python的OOP支持非常强大;它确实允许多重继承,并且所有东西都可以作为一级对象(包括类、方法等)进行操作。

多态性是通过鸭子类型来表达的。例如,您可以以相同的方式遍历列表、元组、字典、文件、web资源等。

有很多有争议的小问题并不是面向对象的,比如用len(list)而不是list.len()来获取序列的长度,但是最好不要担心它们。

票数 8
EN

Stack Overflow用户

发布于 2009-05-27 17:56:21

Python的OOP模型的一个不同寻常的方面是它的封装机制。基本上,Python假定程序员不会做坏事,因此它不会在任何程度上保护私有成员变量或方法。

它的工作原理是将以两个下划线开头、以少于两个下划线结尾的成员名称弄乱。这样的标识符在任何地方都会被更改,以便它们在类名前面加上额外的下划线。因此:

代码语言:javascript
复制
class foo:
    def public(self):
        return self.__private()
    def __private(self):
        return 5

print foo().public()
print foo()._foo__private()

以两个(或更多)下划线开头和结尾的名称没有损坏,因此保留了__init__ ( python用于构造新实例的方法)。

这里有一个link更详细地解释了这一点。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/916962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档