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

  • 相关阅读:
    hdu 2842 Chinese Rings
    Codeforces Round #118 (Div. 1) A 矩阵快速幂
    hdu2604 Queuing
    支付宝 生活号 获取 userId 和 生活号支付
    maven 项目使用本地jar
    nexus 私有 maven 仓库的搭建
    linux jdk 安装
    gitlab 可以上传代码,但是 不能 上传 tag 问题
    maven 内置变量
    mysql 不允许分组的问题 this is incompatible with sql_mode=only_full_group_by
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4606087.html
Copyright © 2011-2022 走看看