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  水之原  阅读(365)  评论(0)    收藏  举报