21、面向对象

面向对象

类和对象

  • 面向过程和面向对象的编程

    • 面向过程的编程:函数式编程,C程序等
    • 面向对象的编程:C++,Java,Python等
  • 类和对象:是面向对象中的两个重要概念

    • 类:是对事物的抽象,比如:汽车模型
    • 对象:是类的一个实例,比如:QQ轿车,大客车
  • 范例说明

    • 汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化一台真实的汽车实体出来

Python类定义

  • Python类的定义

    • 使用class关键字定义一个类,并且类名的首字母要大写
    • 当程序员需要创建的类型不能用简单类型表示时就需要创建类
    • 类把需要的变量和函数组合在一起,这种包含也称之为“封装”
  • Python类的结构

      class 类名:
          成员变量
          成员函数
    
      class MyClass():
          first = 123
          def fun(self):
              print "I am function"    
    
  • 对象的创建

    • 创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
      • 句柄用于区分不同的对象

      • 对象的属性和方法与类中的成员变量和成员函数对应

          if __name__ == "__main__":
              myClass = MyClass()     #创建类的一个实例
        
  • 构造函数__init__

      class Person:
          def __init__(self, name, lang, website):
              self.name = name
              self.lang = lang
              self.website = website
    
  • self是一个很神奇的参数

    • self指向类的一个实例,当实例调用方法时,self就指向这个调用的方法的实例
  • 子类、父类和继承

      # 抽象形状类
      class Shape:
          # 类的属性
          edge = 0
          # 构造函数
          def __init__(self, edge):
              self.edge = edge
          # 类的方法
          def getEdge(self):
              return self.edge
          # 抽象方法	
          def getArea(self):
              pass
    
      #三角形类,继承抽象形状类
      class Triangle(Shape):
          width = 0
          height = 0
          # 构造函数
          def __init__(self, width, height):
              #调用父类构造函数
              Shape.__init__(self, 3)
              self.width = width
              self.height = height
          #重写方法
          def getArea(self):
              return self.width * self.height / 2
    
      #四边形类,继承抽象形状类		
      class Rectangle(Shape):
          width = 0
          height = 0
          # 构造函数
          def __init__(self, width, height):
              #调用父类构造函数
              Shape.__init__(self, 4)
              self.width = width
              self.height = height
          #重写方法
          def getArea(self):
              return self.width * self.height
              
      triangle = Triangle(4,5);
      print triangle.getEdge()
      print triangle.getArea()
    
      rectangle = Rectangle(4,5);
      print rectangle.getEdge()
      print rectangle.getArea()
    
  • python支持多继承,但不推荐使用

posted @ 2018-01-01 21:31  水之原  阅读(327)  评论(0编辑  收藏  举报