美文网首页程序员
面向对象编程思想的发展历史

面向对象编程思想的发展历史

作者: 勤快的树懒 | 来源:发表于2017-07-27 21:29 被阅读194次

引言

提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。

在讨论Python的OOP之前,先看几个OOP术语的定义:

 类:对具有相同数据和方法的一组对象的描述或定义。  对象:对象是一个类的实例。

 实例(instance):一个对象的实例化实现。

 标识(identity):每个对象的实例都需要一个可以唯一标识这个实例的标记。  实例属性(instance attribute):一个对象就是一组属性的集合。

实例方法(instance method):所有存取或者更新对象某个实例一条或者多条属性的函数的集合。

 类属性(classattribute):属于一个类中所有对象的属性,不会只在某个实例上发生变化

 类方法(classmethod):那些无须特定的对性实例就能够工作的从属于类的函数

1.Python中的类与对象

Python中定义类的方式比较简单: 

class 类名:  类变量

      def __init__(self,paramers):

      def 函数(self,...)

其中直接定义在类体中的变量叫类变量,而在类的方法中定义的变量叫实例变量。类的属性包括成员变量和方法,其中方法的定义和普通函数的定义非常类似,但方法必须以self作为第一个参数。

举例:

class MyFirstTestClass:

      classSpec="itis a test class"  def__init__(self,word):  

      print"say "+word  

     defhello(self,name):   

     print"hello "+name

在Python类中定义的方法通常有三种:实例方法,类方法以及静态方法。这三者之间的区别是实例方法一般都以self作为第一个参数,必须和具体的对象实例进行绑定才能访问,而类方法以cls作为第一个参数,cls表示类本身,定义时使用@classmethod;而静态方法不需要默认的任何参数,跟一般的普通函数类似.定义的时候使用@staticmethod。

封装和访问控制

与Java不同,Python的访问控制相对简单,没有public,private,protected等属性,python认为用户在访问对象的属性的时候是明确自己在做什么的,因此认为私有数据不是必须的,但是如果你必须实现数据隐藏,也是可以的,具体方法就是在变量名前加双下划线。如__privatedata=0,定义私有方法则是在方法名称前加上__下划线。但即使对于隐藏的数据,也是有一定的方法可以访问的。方法就是__className__attrName。Python对于私有变

量会进行Namemangling是Python中为了方便定义私有的变量和方法,防止和继承类以及其他外部的变量或者方法冲突而采取的一种机制。在python中通过__spam定义的私有变量为最终被翻译成_classname__spam,其中classname为类名,当类名是以_开头的时候则不会发生Namemangling。Namemangling 存在的一个问题是当字符串长度超过255的时候则会发生截断。

3. Python中的继承

继承

Python同时支持单继承与多继承,继承的基本语法为class新类名(父类1,父类2,..),当只有一个父类时为单继承,当存在多个父类时为多继承。子类会继承父类的所有的属性和方法,子类也可以覆盖父类同名的变量和方法。在传统类中,如果子类和父类中同名的方法或者属性,在查找的时候基本遵循自左到右,深度优先的原则。如下列:

>>>class A:

      defsayhi(self): 

      print'I am A hi' 

>>>class B:

      defsayhi(self): 

      print'I am B Hi'

>>>class C(A,B): 

      pass 

>>>d=C()

>>>d.sayhi()

      Iam A hi

>>>B.sayhi(d) 

      Iam B Hi

相关文章

  • 面向对象编程思想的发展历史

    引言 提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封...

  • 7.27学习 面向对象(下)(继承、多态)

    面向对象编程思想的发展历程 面向对象(Object Oriented):是一种编程思想,是一种对现实世界的理解和抽...

  • 类与对象(1) - Class、Object

    面向对象编程思想 Java开发是利用 面向对象 的思想实现 面向过程 的开发。 面向对象编程(OOP:Object...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • js高级 第一章

    JS面向对象编程 一、什么是面向对象思想(编程思想角度)? 现有的两种程序思想:面向过程和面向对象 1.面向过程...

  • 何为面向接口编程

    面向接口编程不与面向对象编程同级,而是附属于面向对象编程思想,是面向对象编程思想的精髓之一。 定义 在系统分析和架...

  • python面向对象1

    编程思想 编程思想:面向过程编程(穷人思想)、函数式编程、面向对象编程(富豪) 面向过程编程: 算法和逻辑 函数式...

  • python-day14

    一、面向对象编程 编程思想:1.面向对象编程 --> 算法,逻辑2.函数式编程 --> 函数3.面向对象编程 ...

  • JavaScript 面向对象入门

    面向对象的概念 1、概念: 从编程思想角度理解:面向过程的编程思想,关注解决问题的步骤;面向对象的编程思想,关注...

  • JavaScript学习笔记(一)

    Javascript面向对象 1. 面向对象编程介绍 1.1 两大编程思想 面向过程 & 面向对象 1.2 面向过...

网友评论

    本文标题:面向对象编程思想的发展历史

    本文链接:https://www.haomeiwen.com/subject/sgrtlxtx.html