Python.d12
json数据格式
json是一种轻量级的数据交互格式,可以按照json指定的格式去组织和封装数据
json本质是带有特定格式的字符串
功能:在各个编程语言中流通的数据格式,负责不同编程语言的数据传递和交互。类似于:
- 国际通用语言-英语
- 普通话
示例:
Python格式数据–>json数据格式–>c语言数据可用的数据格式
c语言格式数据–>json数据格式–>Python可用的数据格式
json格式数据转化
json数据格式示例:
1 | {"name":"admin","age":18} |
python数据和json数据相互转化
1 | # 导入json模块 |
如果有中文可以带上:ensure_ascii = False
来确保中文正常转化
pycharts模块
概况:
Echarts是一个有百度开源的数据可视化,凭借良好的交互性,精巧的图表设计,得到众多的开发者认可。Python是门富有表达力的语言,很适合用作数据处理。当数据分析遇上数据可视化时, pyecharts便诞生了。
可以在官网画廊里预览图表效果
安装pyecharts模块
pip install pyecharts
类
类的定义和使用
1 | class 类名称 |
创建类对象 = 类名称()
范例:
1 | class Student: |
self
是必须填写的,在方法内部调用属性时,需要使用这个关键字
类只是一种程序内的设计蓝图,需要基于蓝图搭建实体,才能正常工作,这便是面向对象编程思想。
类的构造方法
__init__()
可以实现:
- 创建类对象的时候,自动执行
- 创建类对象的时候,将传入参数自动传
__init__
方法使用。
使用__init__
方法可以省略定义类的属性
构造方法也是内在方法,也需要使用self
关键字
类的内置方法
内置方法(也叫魔术方法)
__init__
构造方法__str__
字符串方法__lt__
小于、大于符号比较__le__
小于等于、大于等于符号比较__eq__
==符号比较
__str__方法
1 | class student: |
当类对象需要转化为字符串时,会输出内存地址
内存地址没有多大的作用,我们可以通过__str__
方法,控制类转化为字符串的行为
示例:
1 | class Student: |
__lt__方法
直接对两个对象进行比较是不可以的,但是类中__lt__
方法,即可同时实现小于和大于符号两种比较
范例:
1 | class Student: |
- 方法名:
__lt__
- 传入参数:other,另一个类对象
- 返回值:
true
或false
__le__
方法,__eq__
方法和__lt__
方法类似
封装
面向对象的3大主要特性:
- 封装
- 继承
- 多态
封装表示的是,将现实事物的:
- 属性
- 行为
封装到类中,描述为:
- 成员变量
- 成员方法
私有成员
对应现实事物不公开的属性的行为
类中提供私有成员的的形式:
- 私有成员变量
- 私有成员方法
定义私有成员的方法,只需要:
- 私有成员变量:变量名以
__
开头(两个下划线) - 私有成员方法:方法名以
__
开头(两个下划线)
私有方法无法直接被类对象使用
私有变量无法赋值,也无法获取值
私有成员无法使用,但是可以被其他成员使用
范例:
1 | class Phone: |
私有成员的意义:
在类中提供仅供内部使用的属性和方法,而不对外开发(类对象无法使用)
继承
继承表示:将从父类那里继承(复制)成员变量和成员方法(不含私有)
继承分为:
- 单继承
- 多继承
单继承语法:
1 | class 类名(父类名): |
多继承语法:
1 | class 类名(父类1, 父类2, ...): |
多继承结合父类时,不想添加内容体时,可以写入pass
关键字
复写
子类继承父类成员属性和成员方法后,如果对其“不满意”,可以进行复写。
即:在子类中重新定义同名的属性或方法即可。
调用父类同名成员
一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
如果需要使用被复写的父类的成员,需要特殊的调用方式:
方式1:
- 调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法
方式2: - 使用
super()
调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()
类型注解
在代码中涉及数据交互的地方,提供数据类型的注解(显示说明)
主要功能:
- 帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
- 帮助开发者对其变量进行注释
支持:
- 变量的类型注解
- 函数(方法)形参列表和返回值的类型注解
基础语法:变量:类型
示例:
1 | var_1: int = 10 |
详细注解:
1 | my_list: ini[int] = [1, 2, 3] |
类型注解仅仅是提示性的,并非决定性的
例如var_1:int = "itheima"
并不会报错
函数(方法)的-形参注解
代码示例:
1 | def 函数方法名(形参名: 类型, 形参名: 类型, ......): |
返回值注解:
代码示例:
1 | def 函数方法名(形参: 类型, ......, 形参: 类型) -> 返回值类型: |
Union类型
使用Union[类型,...,类型]
可以定义联合类型注解
需要导入Union
模块,from typing import Union
多态
多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。
多态常作用在继承关系上,比如:
- 函数(方法)形参声明接受父类对象
- 实际传入父类的子类对象进行工作
即:
- 以父类做定义声明
- 以子类做实际工作
- 用以获得同一行为,不同状态
1 | class Animal: |
可以注意到父类Animal时空实现,这种设计的含义是:
- 父类用来确定有哪些方法
- 具体方法实现则由子类决定
这种写法,就叫作抽象类(也可以称之为接口)
抽象类:含有抽象方法的类
抽象方法:方法体是空实现(pass
)称之为抽象方法
配合多态,完成
- 抽象父类设计(设计标准)
- 具体子类实现(实现标准)