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

  • 相关阅读:
    栈的概念
    什么是 JavaConfig?
    数据库连接池的原理。为什么要使用连接池。
    根据你以往的经验简单叙述一下MYSQL的优化
    动态横切
    横切技术
    什么是AOP
    BIO ,NIO ,AIO 有什么区别?
    简述Comparable和Comparator两个接口的区别
    Spring Boot 客户端?
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4606087.html
Copyright © 2011-2022 走看看