面向过程和面向对象

面向过程编程

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

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
posted @ 2019-09-03 18:29  SetCreed  阅读(232)  评论(0编辑  收藏  举报