在python中几乎可以完成C++里所有面向对象编程的元素。
继承:python支持多继承:
class Derived(base1, base2, base3):
pass
多态:python中的所有实例方法都是virtual类型的
封装:
这个比较特殊,C++编程中一直强调得比较多的是:为了隐藏实现,所有的成员变量都要是private类型的,还有那些仅与实现相关的,不作为外部接口的方法都要定义成private类型的(或者protected)。但是在python里面,并不存在真正的私有类型,根据google python style guide,对于简单的成员变量访问,应该直接通过成员的方式而不用特意定义一个访问函数。还有一点,实现private的方式是通过代码混淆。且看下面的代码:
class T(object):
def __init__(self):
self.__x = 1.0
def __func(self):
print("test")
t = T()
t._T__func()
print(t._T__x)
由于成员的名字前面加了两个下划线(要求是至少两个),所以最终形成的成员名字被混淆了,不能按照原名字访问了。但是依旧可以访问,所有python里面的私有访问控制
更多的是一种惯例而不是语言特性上直接隔离。
最后,关于python中的类的理解,感觉更像是namespace(可以理解为一个哈希表,可以将名字与变量id对应起来),而且其中的名字还能动态添加(比如给一个实例添加一个成员变量)