zoukankan      html  css  js  c++  java
  • 面向对象基础

    面向过程编程

    就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

    优点:性能高,流程清晰

    缺点:不易维护,不易复用,不易扩展,使用于小型项目

    用面向过程的方法写出来的程序就像是一份蛋炒饭,先炒蛋,混合些洋葱粒,胡萝卜丝,豌豆,翻炒片刻,再把饭加入锅里,加各种调料,酱油味精什么的,蛋与饭交融在一起,充分混合,加上各种香料,香味已经渗透到饭里面。吃起来让人欲罢不能。但是,对于我这样不喜欢吃蛋的人来说就不是那么友好了。

    面向对象编程:对象与对象之间的交互

    面向(对着)对象bject(一辆自行车就是一个对象)编程(码代码)

    优点:易维护,易复用,易扩展,系统更加灵活

    缺点:异常复杂

    三大特点:封装,继承,多态

    用面向对象写出来的程序就像是一份盖浇饭,可以根据不同的人的喜好来烹饪,有的喜欢番茄炒蛋盖浇饭,有的喜欢青椒肉丝盖浇饭,都可以,直接把菜往饭上一堆就可以了,饭菜是相互独立的,由于菜汁是覆盖在饭的上面的,吃的时候还需搅拌搅拌,让菜汁的香味慢慢融合到饭里,没有蛋炒饭来的那么干脆。

    所以蛋炒饭与盖浇饭谁也代替不了谁,它们是为不同的吃货准备的

    类和对象

    类:(模板/类别)划分了对象,具有相同的属性和方法的对象属于同一类(自己控制)

    对象:一系列特征(属性)和技能(方法的结合体)

    定义类语法

    class 类名(驼峰体):
       school = 'oldboy'  #定义变量(给类添加属性)
       
       def choose_course(self):#定义在类内部的函数一般称为方法(给类添加技能)
            pass
    
    class Student:
      """注释:学生类"""
      school = 'oldboy' #定义变量(给类添加属性)
      
      def choose_course(self):#定义在类内部的函数一般称为方法(给类增加技能)
    
    # stu_dict = Student.__dict__  # 获取类的所有属性和方法
    # print(stu_dict)
    # print(stu_dict['school'])  # 获取学校
    # stu_dict['choose_course'](123)
    # print(Student.__doc__)
    

    函数定义阶段:检测语法,不执行代码

    类定义阶段:执行代码

    • 由类创建一个具体的对象,称为实例化一个对象
    print('stu1:', stu1)
    print(stu1.school)
    print(id(stu1.school))
    stu1.choose_course()  # 对象使用类中的方法时,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self
    

    定制对象独有的特征

    对象本质类似于类,也是一个名称空间,但是对象的名称空间存放对象独有的名字,而类中存放的是对象们共有的名字。因此我们可以直接为对象单独定制名字。

    def init(obj, name, height, weight):
         obj.name = name
         obj.weight = weight
         obj.height = height
    
    
     stu1 = Student()
     init(stu1, 'yutong', '170', '140')  # 
     init是你用来给对象添加独有特征的函数
     print(stu1.name)
     print(stu1.weight)
     print(stu1.height)
    

    类与数据类型

    python中一切皆对象,一切皆数据类型 
     作为对象
     1. 引用  x = 10 ; y = x
     2. 作为容器类元素 lis = [x,func,Student]
     3. 作为函数参数 def func(x, func, Student)
     4. 作为函数返回值 return x,func,Student
    
  • 相关阅读:
    Linux下对拍(A+B问题)
    洛谷 P1043 数字游戏 区间DP
    6.22 集训--DP复习一
    洛谷 P1220 关路灯 区间DP
    A*算法求K短路模板 POJ 2449
    点分治模板 POJ 1741
    HDU
    棋子游戏 51Nod
    数论习题总结
    CodeForces
  • 原文地址:https://www.cnblogs.com/gfhh/p/11455057.html
Copyright © 2011-2022 走看看