首页 > 其他 > 详细

21、面向对象

时间:2018-01-01 22:32:29      阅读:245      评论:0      收藏:0      [点我收藏+]

面向对象

类和对象

  • 面向过程和面向对象的编程
    • 面向过程的编程:函数式编程,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支持多继承,但不推荐使用

21、面向对象

原文:https://www.cnblogs.com/zfc2201/p/8169012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!