今日内容详细

编程思想

面向过程编程

将程序的执行流程化。即分步操作,在分步的过程中解决问题。

结构:自然的数据结构
优势:适用于简单系统,容易理解
劣势:难以维护,后期增添功能

面向对象编程

定义好对象,为其编写功能。对象其实就是一个"容器" 将数据与功能整合到一起。抽象概念一切皆是对象。

结构:封装、继承、多态的数据结构
优势:适用于大型复杂系统,用于需要对应对象的编程有明显的优势
劣势:难部分使用场景较为局限

类与对象

概念

对象:数据与功能的结合体

类:即类别、种类 相当于诸多对象公有的特征(数据、功能)
存放 一群拥有相同功能和数据 的对象的 相同功能和数据 的容器 类其实也算对象(一切皆对象)

类与对象的创建

在代码编程中是先有类才能有对象

先定义类 后产生对象

# 学生类
class Student:
# 学生类公共的数据
school = '清华大学'
# 学生类公共的功能
def choose_course(self):
print('学生选课功能') """类体代码无需调用就会执行 产生类的名称空间"""

语法结构

class 类名:
类的体代码
1.class是定义类的关键字
2.类名类似于函数名 但是首字母推荐大写 用于区分
3.类体代码就是存放对象公共数据和功能的地方
数据: 变量名 = 变量值
功能: 函数

因为其内部是一个字典数据类型,所以查看名称空间使用 _ _ dict _ _

# 查看名称空间的方法>>>: __dict__
print(类名.__dict__) # 返回值是一个字典 # 获取类中的属性
print(类名.__dict__['变量名'])
print(类名.__dict__['函数名']) """ 类获取数据和功能有一个简便的方式>>>:句点符 """
print(类名.变量名)
print(类名.函数名)

如何产生对象

类名加括号

'''类名加括号就是在产生一个对象'''
# 接收名 = 类名() 产生一个空的名称空间
obj1 = Student()
obj2 = Student()
print(obj1.__dict__, obj2.__dict__) # {} {} # 接受名.属性名(变量名或函数名)会获得它的功能或值,相当于对象
print(obj1.school) # 清华大学
print(obj2.school) # 清华大学
print(obj1.choose_course) # bound method
print(obj2.choose_course) # bound method # 修改名字与值的对应关系
# 类名.属性 = '新的值'
print(obj1.school) # 清华大学
print(obj2.school) # 清华大学
Student.school = '北京大学' # Student.__dict__['school'] = '北京大学'
print(obj1.school) # 北京大学
print(obj2.school) # 北京大学

对象的实例化

'''
__init__
该方法就一个功能>>>:给对象添加独有的数据
''' """
类中的__init__方法会在类产生对象的时候自动执行
类产生对象的具体步骤
1.先创建一个没有独有数据的空对象 {}
2.将空对象和类括号内传入的数据一并交给__init__执行
__init__的第一个参数就是对象本身
__init__(obj,name,age,gender)
3.将创建好的对象自动返回
给你提供这种方式能够减少代码的编写 ps:针对括号内第一个形参self其实就是一个普通的变量名而已
只不过该变量名将来专门接收对象的 所以给它起了个固定的名字叫self
"""
class 类名:
def __init__(对象名, 属性1, 属性2, 属性3):
'''该方法就一个功能>>>:给对象添加独有的数据'''
self.属性1 = 属性1的对象
self.属性2 = 属性2的对象
self.属性3 = 属性3的对象 类中的__init__方法会在类产生对象的时候自动执行
类产生对象的具体步骤
1.创建一个空的名称空间
2.将空的名称空间和括号类的数据一起由__init__执行
3.第一个参数就是本身属性的名称
4.其他参数将作为第一个参数属性的值
5.将创建好的对象自动返回 ps:针对括号内第一个形参self其实就是一个普通的变量名而已
只不过该变量名将来专门接收对象的 所以给它起了个固定的名字叫self

绑定方法

"""
在类中定义的函数默认都是绑定给对象使用的
即当对象来调时 会自动将对象当做第一个参数传入
"""
class Student:
school = '清华大学'
# __init__方法不能自己去调用
def __init__(self, name, age):
self.name = name
self.age = age def func(self):
print('%s正在调用func方法'%self.name) def index(self):
print('%s正在调用index方法'%self.name) obj1 = Student('jason', 18)
print(obj1)
obj2 = Student('kevin', 28)
# 类调用类中函数 有几个参数就需要传几个参数
Student.func(obj1)
# 对象调用类中函数 会将当前调用的对象当做第一个参数自动传入
obj1.func()
obj2.func()
print(obj1.func)
print(obj2.index)

python学习-Day26的更多相关文章

  1. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  2. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  3. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  4. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  5. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  6. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  7. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  8. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  9. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

随机推荐

  1. outlook配置osc地址(删除原账户重新配置)

    方法二:使用手动配置邮箱(适用于标准化未入域机器) Step1:在"开始"菜单找到 "控制面板"并打开(或按键盘上的"Win"+" ...

  2. JDBC操作数据库的步骤 ?

    注册数据库驱动. 建立数据库连接. 创建一个Statement. 执行SQL语句. 处理结果集. 关闭数据库连接.

  3. 服务端处理 Watcher 实现 ?

    1.服务端接收 Watcher 并存储 接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点 的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端 ...

  4. websocket 实现简单网页版wechat

    1.群聊 web - socket--基于TCP/UDP http - 无状态的短链接 长连接:客户端和服务器保持永久性的链接,除非有一方主动断开, 轮询:客户端和服务端不断连接,然后断开,请求响应; ...

  5. Spring系列28:@Transactional事务源码分析

    本文内容 @Transactional事务使用 @EnableTransactionManagement 详解 @Transactional事务属性的解析 TransactionInterceptor ...

  6. STM32 HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数

    最近笔者开始学习STM32的HAL库,由于以前一直用标准库进行开发,于是发现了HAL库几点好玩的地方,在此分享. 1.句柄在STM32的标准库中,假设我们要初始化一个外设(这里以USART为例)我们首 ...

  7. 激光雷达 LOAM 论文 解析

    转自:https://blog.csdn.net/hltt3838/article/details/109261334 固态激光雷达的一段视频:https://v.qq.com/x/page/a078 ...

  8. CSS 文本控制

    one more time one more chance. 一歩重头学前端, css入门. 学习一些 CSS 文本控制的属性,防止做傻事.请大家对照下面列表检验下: 会的.不会的.似懂非懂的.笔者是 ...

  9. JavaScript 工作原理之七-Web Workers 分类及 5 个使用场景

    Web Workers 分类及 5 个使用场景 原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 这是 JavaScript 工作原理的第七章. 本系列 ...

  10. ES6-11学习笔记--Symbol

    Symbol:一种新的原始数据类型   声明方式: let s1 = Symbol() let s2 = Symbol() console.log(s1); // Symbol() console.l ...