Python(七)面向对象

2018-09-19  本文已影响1人  社会主义顶梁鹿

一、简介

 (1)对象

对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

 (2)对象的静态特征和动态特征       人    

-对象静态特征:人的身高、汽车的颜色、电脑的重量。

-对象动态特征:人的跑步行为、汽车的启动功能、电脑的关机行为

人们将对象的静态特征抽象为变量;动态特征抽象为行为,称为方法。

一个对象是由一组变量和一组方法组成。

(3) 类

将具有相同属性和相同行为的一组对象称为类。 模具   实例

类是一个抽象的概念,要利用类来解决问题,必须要使用类去创建一个类的实例对象,然后使用类的实例对象去访问类的属性和方法去实现程序的功能。

例如:就如同“汽车”本身是一个抽象的概念,只用使用了该类中的一辆具体的汽车,才能访问汽车的属性和方法

(4)面向过程与面向对象的区别

①面向过程编程

 面向过程编程是一种以事件为中心的编程思想,分析解决问题的步骤,然后使用函数或语句块把这些步骤一步一步实现,使用的时候一个一个一次调用就可以了。使用面向过程思想编写的代码,相对条理更清晰,更易读。

但是随着程序的增加,系统的膨胀,过程变得越来越复杂,变的不容易维护,一旦过程需要调整,修改十分麻烦,甚至很多代码都要重写

②面向对象编程

是一种以事物为中心的编程思想,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是分析在解决问题的步骤中事物的行为。面向对象强调的是将问题对象化,因为问题的解决都是由对象参与,而且这种编程思想更贴近现实。

使用面向对象思想编写的代码,将数据和功能都封装在对象中,即使后续需要调整,只需要修改特定的对象,代码更易维护。

二、面向对象编程最重要的概念——类(class)和对象(object)

(1)类的简介

类是一种抽象的类型,对象是这种类型的实例

一个类可以有属于它的函数,被称为类的“方法”

一个类/对象可以有属于它的变量,被称为类/对象的“域”,域根据所属不同,又分别被称为“类变量”和“实例变量”

方法和域合称为类的属性

类就是一个容器

(2)创建类

-class语句后跟类名,缩进语句块表示类的内部

-在python中习惯在定义类时,将首字符大写,用于区分类名和函数名、变量名

class  Employee:           雇员类  类型

     empCount= 0                员工人数          #类变量

   def  __init__(self,myName, mySalary):       # __init__()方法里边定义的 构造函数 方法 

            self.name = myName    self.变量     属性 

            self.salary = mySalary

            Employee.empCount += 1

     defdisplayCount(self):    #类的方法   显示员工人数的方法

            print("Total Employee %d" %Employee.empCount)

   defdisplayEmployee(self):  #类的方法  显示当前员工的信息

           print(“Name : ”, self.name, “, Salary: ”,self.salary)

(3)类的方法

①类的方法和普通函数区别:

    类方法必须有一个额外的第一个参数名称self,但是在调用这个方法的时候,不需要为这个参数赋值,python会提供这个值,这个特别的参数指向对象本身,按照惯例它的名字是self,所以方法至少有一个参数self.

②self变量有什么用?如何给self变量赋值?

    例子:假设有一个类  MyClass  模型 和  一个类的对象  MyObject(),当调用对象的方法MyObject.method(arg1,arg2)时,会由python自动转为 MyClass.method(MyObject,arg1,arg2)

③__init__方法

__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。__init__个对象被建立时,马上运行,而不是像其他类方法一样,方法在类的里面定义,手动调用。

可以通过对个这个方法传递参数来初始化对象。

注意:这个方法的名称开始和结尾都是双下划线

(4)创建对象

AAA = Employee("Zara", 2000)  

(5)访问方法和属性

使用点运算符来访问对象的方法,而类变量使用类名来访问。

AAA.displayEmployee()

Employee.empCount = 10

三、变量

(1)类的变量

-由一个类的所有对象共享使用,所以当某个对象对类的变量做了改动,这个改动会反映到所有其他的对象上

-对象的变量由类的每个对象拥有,即对象的变量不是共享的

(2)定义私有变量

如果想要定义私有变量,即只能在类内部使用,不能再类外使用的变量,只需要在变量名前加双下划线

class people:

     __aa =0       #私有变量在外部无法调用

     def __init__(self,ename ='admin'):

self.name = ename

bb = people()

print(bb.__aa)

四、继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制,继承可以理解为类型和子类型之间的关系,被继承的类称为基本类或超类,继承后的类被称为导出类或子类,子类能够继承超类的属性,即方法和域,通过这种继承机制,相同的属性就不需要重复编写,因此很好的实现了代码重用

在python中继承是通过在定义子类时,将超类的名称作为一个元组跟在子类名称后来表示。子类在继承过程中,可以新增独有的属性。如果子类与父类有相同的方法,会首先调用子类的方法。如果子类继承多个父类,且父类中函数方法相同,则会首先调用排在前面的父类方法。

class animal:

    def __init__(self):

        print('动物')

    def eat(self):

        print('吃')

class dog(animal):    #定义dog类继承animal为父类

    def __init__(self):

        print('狗')

taidi = dog()

print(taidi.eat())    #调用父类里面的函数方法

通过子类继承超类,能够提高代码的重用性,同时还具备另外一个优点:如果超类发生变更,它能自动的反映到子类中

上一篇下一篇

猜你喜欢

热点阅读