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

  • 相关阅读:
    Item 16: 让const成员函数做到线程安全
    学习张鑫旭大神元素抛物线运动插件
    js根据浏览器对css3移动的支持,选择元素移动方式
    如何在图片加载完成前获取到图片宽高
    JavaScript和SVG实现点击连线
    多层级叠加问题
    闭包应用
    展示触摸屏网页打包成桌面应用(nw.js)
    获取鼠标坐标
    常用文档
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4606087.html
Copyright © 2011-2022 走看看