10.7 知识总结(面向过程,面向对象,类的定义和对象的产生等)

一、面向过程编程

       首先,在编程中,面向过程和面向对象是编程的两大编程思想,分别是:面向过程和面向对象,二不是一门新的技术栈.

     1.1 什么是面向过程?

面向过程中核心是过程二字,过程就是先干什么、在干什么、最后干什么,就是机械式的思维方式。

生活案例:
               # 把大象放冰箱需要几步?
               1. 打开冰箱门
               2. 把大象放进冰箱
               3. 关上冰箱门

    1.2 优点和缺点

         优点:复杂的问题简单化、进而流程化
         缺点:扩展性差,牵一发而动全身
         应用场景: 一般用在对扩展性要求比较差的情况

每日练习:

              使用面向过程写一个注册的案例来体会面向过程的优缺点       

         1. 先让用户输入用户名和密码

def get_userinfo():
    username = input('username:>>>').strip()
    password = input('password:>>>').strip()
    email = input('email:>>>').strip()
    return {
        'username': username,
        'password': password,
        'email': email,
    }

           2. 验证参数

def check_info(userinfo):
    flag = True
    if len(userinfo['username']) == 0:
        print('用户名不能为空')
        flag = False

    if len(userinfo['password']) == 0:
        print('密码不能为空')
        flag = False

    if len(userinfo['email']) == 0:
        print('邮箱不能为空')
        flag = False
    return {
        'flag': flag,
        'userinfo': userinfo
    }

         3. 直接把数据写入文件中

def save_info(param):
    # 用来保存数据到文件中
    """
    param={
        'flag':flag,
        'userinfo':userinfo
    }
    :param param:
    :return:
    """
    if param['flag']:
        with open('userinfo.txt', 'w', encoding='utf-8') as f:
            import json
            json.dump(param['userinfo'], f)


def main():
    userinfo = get_userinfo()
    param = check_info(userinfo)
    save_info(param)


if __name__ == '__main__':
    main()

 二、面向对象编程

       2.1 对象是什么?

             在生活中:
                  对象就是'特征'与'技能'的集合体。
            在程序中:
                 对象就是盛放'数据属性'和'功能'的容器。

      2.2 优点和缺点

            优点:扩展性强
            缺点:简单的问题复杂化了

           案例:学生选课系统

三、类的定义和对象的产生

          对象:是特征与技能的结合体。

       每日一问 到底是先有对象还是先有类?

                      1. 生活中
                             先有人,在有人类,那就是先有对象,在有类
                     2. 程序中:
                             一定是先有类,然后调用类,产生对象!!!!!!!

      3.1 专业语法

 类的定义
    def index():pass

    class Student():
        pass
"""

## 函数中得括号一定不能省略
# def index():
#     pass
# class Stundent():
#     pass


# class Student():
#     pass

注:

1. 关键字使用class来声明
2. class后面写的是类名,类名的命名:一般情况下遵循变量的命名规范即可,类名一般首字母都要大写,(小写也行,但是不推荐)
3. 如果你的类名比较长,推荐使用驼峰法,并且是大驼峰
4. 类名后面的小括号不能省略

  3.2定义类

  代码展示

class Student():
    school = 'SH'  # 类属性,其实就是变量吗?

    def choose_course(stu_dict, course):
        stu_dict['courses'].append(course)
        print("%s选课成功:%s" % (stu_dict['name'], stu_dict['courses']))

    print(123)

 定义类发生了哪些事情?

 1. 类一旦定义完成,会立马执行类体代码
 2. 会产生类的名称空间,其实就是一个大字典,然后把类中得名字都丢到类的名称空间去
 3. 把类的名称空间绑定给 类名.__dict__中

 3.3 如何查看类的名称空间?

  print(Student.__dict__)

 3.4 调用类产生对象

stu = Student()
print(stu)

 3.5 如何查看对象的名称空间

print(stu.__dict__)

四、定制对象自己独有的属性

 默认情况下,调用类产生一个对象,它是一个空对象,没有任何的数据
因此,我们需要给每一个对象添加数据

        1.类里面一定要有这个方法吗? 不一定,也就是说,你如果需要提前定制对象的属性,你就写这个方法, 如果不需要,就不用写

 def __init__(self, name, age, gender, course=None):
        if course is None:
            course = []
        self.name = name  # stu.__dict__['name'] = 'kevin'
        self.age = age  # stu.__dict__['age'] = 18
        self.gender = gender  # stu.__dict__['gender'] = 'male'
        self.courses = course  # stu.__dict__['courses'] = []

     2.  函数写在类里面就称为是方法

 def choose_course(stu_dict, course):
        stu_dict['courses'].append(course)
        print("%s选课成功:%s" % (stu_dict['name'], stu_dict['courses']))

五、属性的查找顺序

      5.1 显示类属性的查找  

class Student():
    school = 'SH'

stu = Student()
 类属性的查找

1.查

print(Student.__dict__['school'])

2.增加

Student.x = 'xxx'
Student.z = 666
print(Student.__dict__)

3.改

Student.school = 'BJ'
print(Student.__dict__)

4.删除

del Student.school
print(Student.__dict__)

对象自己的属性查找

 1. 查
print(stu.name)
print(stu.age)
print(stu.gender)
 print(stu.x)
print(stu.school) # SH
print(stu.__dict__)

 增加
stu.x = 666
stu1.x = 999


 改
stu.x = 888

删除

 del stu.x
del stu.school
print(stu.__dict__)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值