zoukankan      html  css  js  c++  java
  • 面向过程和面向对象

    面向过程编程

    面向(对着)--> 过程(流程/步骤)--> 编程(码代码)

    IPO

    Input(输入)-->>Process(过程/处理)--> Output(输出)

    未来码代码的目的:输入一些变量,然后会通过一些列步骤改变变量,然后得到想要的结果

    def compare2(x, y):
        if x > y:
            return x
        else:
            return y
    
    x = input('请输入一个数:')
    y = input('请输入另一个数:')
    res = compare2(x, y)
    print(res)
    

    面向过程编程:按特定的步骤,一个个函数,上一个函数的输出是下一个函数的输入

    • 优点:代码的独立性提高了,流程清晰
    • 缺点:一个错误,整个程序会崩掉

    编程

    控制变量不断地变化

    怎么找bug

    x = 10
    y = 20
    
    # 流程1
    # 变量每变化一次,就打印一次
    # 流程2
    
    ……
    # 流程(方法有很多种)  需求的实现是多样化的,没有唯一解
    
    1. 定位bug,不一定就是那一行出错了
    2. 打印变量变化的状态,判断该流程是否有问题

    面向对象编程

    • 对象与对象之间交互
    • 优点:一个对象的变化不会对其他对象产生影响
    • 缺点:编程的复杂度远高于面向过程

    类和对象

    类:(模板/类别)划分了对象,具有相同属性和技能的对象属于同一类

    在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念,既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。

    python中的类

    class Student():    # 定义了学生类
        def __init__(self, name, age, height, weight):
            self.age = age
            self.name = name
            self.height = height
            self.weight = weight
    
        def choose_course(self):
            print(f'{self}正在选课')
    
    cwz = Student('cwz', 18, 180, 140)
    print(cwz.name)
    print(cwz.age)
    print(cwz.height)
    print(cwz.weight)
    

    定义类:

    class Student():
        '''注释:定义类'''
        school = 'oldboy'
        def choose_course(self):
            print('正在选课')
    

    定义对象

    调用类即可产生对象,调用类的过程又称为类的实例化

    class Student():
        '''注释:定义类'''
        school = 'oldboy'
        def choose_course(self):
            print('正在选课')
    
    
    stu1=Student()   # 实例化对象,stu1就是一个对象
    print(stu1.school)
    stu2 = Student()
    stu2.choose_course()   
    # 对象使用类的方法,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self
    
    # 输出结果:
    oldboy
    正在选课
    

    类中定义变量使用驼峰体

    类定义阶段,会执行代码

    定制对象独有特征

    class Student():
        '''注释:定义类'''
        school = 'oldboy'
        def choose_course(self):
            print(self)
            print('正在选课')
    
    def init(obj, name, height, weight):
        obj.name = name
        obj.weight = weight
        obj.height = height
        
    stu2 = Student()
    init(stu2, 'neo', 190, 180)   # init是用来给对象添加独有特征的函数
    print(stu2.name)
    

    定义__init__方法

    class Student():
        def __init__(self, name, age, height, weight):
            self.age = age
            self.name = name
            self.height = height
            self.weight = weight
    
        def choose_course(self):
            print(f'{self.name}正在选课')
    
    neo = Student('neo', 18, 180, 140)
    print(neo.name)
    print(neo.age)
    print(neo.height)
    print(neo.weight)
    neo.choose_course()
    

    python中一切皆对象,一切皆数据类型

    作为对象:

    1. 引用 x = 10 y = x
    2. 作为容器类元素 lt = [x, func, Student]
    3. 作为函数参数 def func(x, func, Student)
    4. 作为函数返回值 return x, func, Studnet
  • 相关阅读:
    使用 Spring data redis 结合 Spring cache 缓存数据配置
    Spring Web Flow 笔记
    Linux 定时实行一次任务命令
    css js 优化工具
    arch Failed to load module "intel"
    go 冒泡排序
    go (break goto continue)
    VirtualBox,Kernel driver not installed (rc=-1908)
    go运算符
    go iota
  • 原文地址:https://www.cnblogs.com/setcreed/p/11454734.html
Copyright © 2011-2022 走看看