ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python入门学习篇二十一

2022-02-14 20:04:04  阅读:253  来源: 互联网

标签:__ 入门 course python 二十一 dic stu dict print


面向过程的概念

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

# 面向过程不是一门技术,是一种做事的思维方式
eg:
    大象放冰箱的步骤:
        1. 打开冰箱门,
        2. 把大象放进冰箱
        3. 观赏冰箱门
        
    优点:复杂的问题简单化,流程化
    缺点:扩展性差,牵一发而动全身
    应用场景:对扩展性要求不高的地方
    eg2:
        写一个注册功能

面向对象的概念

面向对象核心是:对象二字
    # 在python中,一切皆对象
    1. 在程序中:
        对象就是盛放数据属性和功能的容器
    2. 在现实生活中
        对象就是特征与技能的结合体
  
优点:扩展性强
缺点:简单的问题复杂化
应用场景:对扩展性要求高的地方

eg:学生选课系统为例
# 版本3:

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

stu1 = {
    'name': 'tom',
    'age': 19,
    'gender': 'male',
    'courses': [],
    'choose_course':choose_course
}

stu2 = {
    'name': 'kevin',
    'age': 20,
    'gender': 'male',
    'courses': [],
    'choose_course': choose_course
}

stu1['choose_course'](stu1, 'python')
stu2['choose_course'](stu2, 'python')

类的定义与对象的产生

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

# 站在不同的角度,划分的分类不一样
类:一系列对象相似的特征和相似的技能的结合体

问题来了?
    到底是先有类还是先有对象?
     1. 现实生活中:
            一定是先有对象,在有类
     2. 程序中:
         必须先定义类,在调用类产生对象(*******)
# 注意事项:类名,遵循变量的命名规范即可,类名一般都是首字母大写
# 类名有多个单词,推荐使用大驼峰

class Student():
    # 定义类属性
    school = 'SH'
    
    # 在类中,函数被称为是方法
    def choose_course(stu_dic, course):
        stu_dic['courses'].append(course)
        print('%s选课成功%s' % (stu_dic['name'], stu_dic['courses']))
    print(12233333)
    
'''
    定义类发生的几件事?
        1. 类定义完成后,会立马执行类体代码
        2. 执行类体代码,把类中的名字都丢到类的名称空间去
        3. 把类的名称空间绑定给__dict__, 类名.__dict__
'''

# 如何查看类的名称空间
print(Student.__dict__)

# 产生对象, 调用类,类名()
stu1 = Student()  # 调用类,得到一个空对象
stu2 = Student()

# 如何查看对象的名称空间
print(stu1.__dict__)  # 空字典
print(stu2.__dict__)  # 空字典

定制对象自己独有的属性

# 版本3:
class Student():
    # 定义类属性
    school = 'SH'

    # 初始化, 魔术方法
    def __init__(stu_dic, name, age, gender, course=[]):
        stu_dic.name = name  # stu.__dict__['name'] = 'tom'
        stu_dic.age = age  # stu.__dict__['age'] = 19
        stu_dic.gender = gender  # stu.__dict__['gender'] = 'male'
        stu_dic.course = course  # stu.__dict__['course'] = []

    # 在类中,函数被称为是方法
    def choose_course(stu_dic, course):
        stu_dic['courses'].append(course)
        print('%s选课成功%s' % (stu_dic['name'], stu_dic['courses']))


# Student()
# stu = Student(stu, 'tom', 19, 'male')
stu = Student('tom', 19, 'male')  # 调用类的时候,会自动触发__init__方法,并且,会把对象自己当成第一个参数传给函数
stu1 = Student('kevin', 19, 'male')  # 调用类的时候,会自动触发__init__方法,并且,会把对象自己当成第一个参数传给函数

# print(stu.__dict__)
# print(stu1.__dict__)

'''
    调用类的过程也称为是实例化的过程,得到的对象就是一个实例
'''

属性的查找顺序

print(stu1.__dict__)
# 1.类属性
# 读
# print(Student.__dict__['school'])
# print(Student.school)
#
# # 改
# Student.school = 'xxx'
#
#
# del Student.school
# # 删除
#
# # 曾
# Student.aaa = 'xxx'
# print(Student.__dict__)

# 2. 对象属性的增删改查
# print(stu.name)
# print(stu.age)
# print(stu.gender)

# print(stu1.name)
# print(stu1.age)
# print(stu1.gender)

# 对象的属性查找顺序:先在对象自己的名称空间中查找,如果找不到,去产生对象的类中取查找
print(stu.school)
# print(stu.__dict__['school'])

# 增
stu.x = 'aaa'
print(stu.__dict__)

# 改
stu.x = 'bbb'

# 删除
del  stu.x

 

标签:__,入门,course,python,二十一,dic,stu,dict,print
来源: https://www.cnblogs.com/zhangrukai/p/15893919.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有