美文网首页
Python(七)面向对象

Python(七)面向对象

作者: 社会主义顶梁鹿 | 来源:发表于2018-09-19 14:41 被阅读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())    #调用父类里面的函数方法

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

    相关文章

      网友评论

          本文标题:Python(七)面向对象

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