python中的面向对象编程

在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对应起来),而且其中的名字还能动态添加(比如给一个实例添加一个成员变量)

原文地址:https://www.cnblogs.com/hustxujinkang/p/4606087.html