zoukankan      html  css  js  c++  java
  • python中关于OOP的常用术语

    一、python中关于OOP的常用术语

    1.1抽象/实现

    抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于描绘程序结构,从而实现这种模型。抽象不仅包括这种模型的数据属性,还定义了这些数据的接口。

    对某种抽象的实现就是对此数据及与之相关接口的现实化(realization)。现实化这个过程对于客户 程序应当是透明而且无关的。

    1.2封装/接口

    封装描述了对数据/信息进行隐藏的观念,它对数据属性提供接口和访问函数。通过任何客户端直接对数据的访问,无视接口,与封装性都是背道而驰的,除非程序员允许这些操作。作为实现的 一部分,客户端根本就不需要知道在封装之后,数据属性是如何组织的。在Python中,所有的类属性都是公开的,但名字可能被“混淆”了,以阻止未经授权的访问,但仅此而已,再没有其他预防措施了。这就需要在设计时,对数据提供相应的接口,以免客户程序通过不规范的操作来存取封装的数据属性。

    注意:封装绝不是等于“把不想让别人看到、以后可能修改的东西用private隐藏起来”

    真正的封装是,经过深入的思考,做出良好的抽象,给出“完整且最小”的接口,并使得内部细节可以对外透明

    (注意:对外透明的意思是外部调用者可以顺利的得到自己想要的任何功能,完全意识不到内部细节的存在)

    1.3合成

    合成扩充了对类的描述,使得多个不同的类合成为一个大的类,来解决现实问题。合成描述了 一个异常复杂的系统,比如一个类由其它类组成,更小的组件也可能是其它的类,数据属性及行为, 所有这些合在一起,彼此是“有一个”的关系。

    1.4派生、继承、继承结构

    派生描述了子类衍生出新的特性,新类保留已存类类型中所有需要的数据和行为,但允许修改或者其它的自定义操作,都不会修改原类的定义。
    继承描述了子类属性从祖先类继承这样一种方式
    继承结构表示多“代”派生,可以述成一个“族谱”,连续的子类,与祖先类都有关系。

    1.5泛华、特化

    基于继承
    泛化表示所有子类与其父类及祖先类有一样的特点。
    特化描述所有子类的自定义,也就是,什么属性让它与其祖先类不同。

    1.6多态与多态性

    多态指的是同一种事物的多种状态:水这种事物有多种不同的状态:冰,水蒸气

    多态性的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。

    多态表明了动态(又名,运行时)绑定的存在,允计重载及运行时类型确定和验证。

    举例:

    水是一个类

    不同温度,水被实例化成了不同的状态:冰、水蒸气,雾(然而很多人就理解到这一步就认为此乃多态,错,多态是运行时绑定的存在)

    (多态体现在由同一个类实例化出的多哥对象,这些对象执行相同的方法时,执行的过程和结果是不一样的)

    冰、水蒸气、雾,有一个共同的方法就是变成云,但是冰.变云()与水蒸气.变云()是截然不同的两个过程,虽然调用的方法一样。

    1.7自省与反省

    自省也称作反射,这个性质展示了某对象是如何在运行期取得自身信息的。如果传一个对象给你,你可以查出它有什么能力,这是一项强大的特性。如果Python不支持某种形式的自省功能,dir和type内建函数,将很难正常工作。还有那些特殊属性,像__dict__,__name__及__doc__

  • 相关阅读:
    ld: cannot find lXXX" 如lpthread lgomp
    Glib交叉编译:g__cancellable_lock undeclared!&HEADER/C_IN undeclared!&undefined reference to "localeconv"
    Android_清除/更新Bundle中的数据(不finish() Activity的情况下)
    读Kernel感悟Linux内核启动从hello world说起
    细数二十世纪最伟大的十大算法
    error: *** No iconv() implementation found in C library & libiconv 交叉编译 失败编译
    gnulib+glib+glibc+libc的不同转
    [Android] 以singleInstance模式加载的Activity怎么接收以Bundle方式传递过来的参数 By onNewIntent() but not onResum
    Glib在armlinux下的交叉编译
    python 笔记
  • 原文地址:https://www.cnblogs.com/changzhendong/p/11328229.html
Copyright © 2011-2022 走看看