1、概念
(1)面向过程编程是一种以事件为中心的编程思想,分析解决问题的步骤,然后使用函数或语句块把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了(使用面向过程思想编写的代码,相对条理更清晰,更易读)但是随着程序的增加,系统的膨胀,过程变得越来越复杂,变的不容易维护,一旦过程需要调整,修改十分麻烦,甚至很多代码都要重写。“面向对象编程”是一种将数据和功能结合起来,用称为对象的东西包裹组织程序的一种方法
(2)面向对象编程是一种以对象为中心的编程思想,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是分析在解决问题的步骤中对象的行为。面向对象强调的是将问题对象化,因为问题的解决都是由对象参与,而且这种编程思想更贴近现实。使用面向对象思想编写的代码,将数据和功能都封装在对象中,即使后续需要调整,只需要修改特定的对象,代码更易维护
(3)面向对象编程最主要的两个概念是:
*类(class):是一种抽象的类型
*对象(object):是这种类型的实例
一个类可以有属于它的函数,被称为类的“方法”。一个类/对象可以有属于它的变量,被称为类/对象的“域”。域根据所属不同,又分别被称为“类变量”和“实例变量”(方法和域合称为类的属性)
(4)在Python中使用class语句创建类,class语句后跟类名,缩进语句块表示类体。在定义类时,将首字符大写,用于区分类名和函数名、变量名
2、方法
类方法必须有一个额外的第一个参数名称,但是在调用这个方法的时候,不需要为这个参数赋值,Python会提供这个值,这个特别的参数指向对象本身,按照惯例它的名字是self
假设有一个类MyClass和一个类的对象MyObject,当调用对象的方法MyObject.method(arg1,arg2)时,会由Python自动转为MyClass.method(MyObject,arg1,arg2)。即使在类中定义一个不需要参数的方法,这个方法也必须有self这个参数。同时类的方法定义完成后,必须通过创建对象才能调用它
__init__方法在类的一个对象被建立时,马上运行,而不是像其他类方法一样,需要被对象调用,因此这个方法可以用来对类的对象做一些初始化(注意:这个方法的名称开始和结尾都是双下划线)
在上面的例子中,__init__方法运行时,需要一个参数s,并将这个参数赋值给对象的一个变量;因为__init__方法在创建类的对象时就会运行,所以方法所需的参数也是在创建对象的时候传递
3、变量
类的数据部分实际上就是类和对象的名称空间绑定的普通变量,即这些变量只在类和对象的前提下有效,这些变量在类中被称为“域”
有两种类型的域:类的变量和对象的变量,根据是类还是对象拥有这个变量来区分
类的变量由一个类的所有对象共享使用,所以当某个对象对类的变量做了改动,这个改动会反映到所有其他的对象上。对象的变量由类的每个对象拥有,即对象的变量不是共享的
在Python中没有类似其他编程语言的public、private等关键词来修饰成员变量、成员函数,在Python中定义的类变量默认都是公共的
如果想要定义私有变量,即只能在类内部使用,不能再类外使用的变量,只需要在变量名前加双下划线
4、继承
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制,继承可以理解为类型和子类型之间的关系;被继承的类称为基本类或超类,继承后的类被称为导出类或子类;子类能够继承超类的属性,即方法和域,通过这种继承机制,相同的属性就不需要重复编写,因此很好的实现了代码重用
在Python中继承是通过在定义子类时,将超类的名称作为一个元组跟在子类名称后来表示
子类在继承过程中,可以新增独有的属性
子类在继承过程中,还可以重写超类的方法;子类也可以同时继承于多个超类
通过子类继承超类,能够提高代码的重用性;同时还具备另外一个优点:如果超类发生变更,它能自动的反映到子类中
网友评论