当前位置: 首页 > news >正文

【Python】面向对象(专版提升2)

面向对象

  • 1. 概述
    • 1.1面向过程
    • 1.2 面向对象
  • 2. 类和对象
    • 2.1 语法
      • 2.1.1 定义类
      • 2.1.2 实例化对象
    • 2.2 实例成员
      • 2.2.1 实例变量
      • 2.2.2 实例方法
      • 2.2.3 跨类调用
  • 3. 三大特征
    • 3.1 封装
      • 3.1.1 数据角度
      • 3.1.2 行为角度
      • 3.1.3 案例:信息管理系统
        • 3.1.3.1 需求
        • 3.1.3.2 分析
        • 3.1.3.3 设计
    • 3.2 继承
      • 3.2.1 继承方法
      • 3.2.2 内置函数
      • 3.2.4 定义
    • 3.3 多态
      • 3.3.1 定义
      • 3.3.2 重写
      • 3.3.3 重写内置函数

1. 概述

1.1面向过程

(1) 定义:分析出解决问题的步骤,然后逐步实现。
在这里插入图片描述(2) 案例:

dict_bjlz = {
"name": "八角笼中", "type": "剧情", "index": 690761
}
dict_fs = {
"name": "封神第一部", "type": "奇幻", "index": 532622
}
print("%s电影类型是%s,指数%s." %
(dict_bjlz["name"],dict_bjlz["type"],dict_bjlz["index"]))
print("%s电影类型是%s,指数%s." %
(dict_fs["name"],dict_fs["type"],dict_fs["index"]))

(3) 优点:简单直观,适合顺序按步骤执行的任务
(4) 缺点:所有字典都要重复定义键,数据与算法分离不易扩展

1.2 面向对象

(1) 定义:可以使用类将变量与函数组合成新的数据类型
(2)案例:

class Movie:def __init__(self, name, type, index):self.name = nameself.type = typeself.index = indexdef display(self):print("%s电影的类型是%s,指数是%s." % (self.name, 		self.type, self.index))bjlz = Movie("八角笼中","剧情",690761)
fs = Movie("封神第一部","奇幻",532622)
bjlz.display()
fs.display()

(3) 优点:将每个字典相同的键统一定义在类中,将数据与对应的操作组合在一起扩展性强
(4) 缺点:学习曲线陡峭

2. 类和对象

2.1 语法

2.1.1 定义类

在这里插入图片描述
(1) 代码

class 类名:"""文档说明"""def __init__(self,参数):self.实例变量 = 参数def 实例方法(self,参数):pass

(2) 说明
– 类名所有单词首字母大写.
– init 也叫构造函数,创建对象时被调用,也可以省略。
– self 变量绑定的是被创建的对象,名称可以随意。

2.1.2 实例化对象

在这里插入图片描述
(1) 代码

对象名 = 类名(数据)

(2) 说明
– 对象名存储的是实例化后的对象地址
– 类名后面的参数按照构造函数的形参传递

2.2 实例成员

2.2.1 实例变量

(1) 语法
a. 定义:对象.变量名
b. 调用:对象.变量名
(2) 说明
a. 首次通过对象赋值为创建,再次赋值为修改.

class Movie:passmovie = Movie()
movie.name = "八角笼中"
movie.name = "封神第一部"

b. 通常在构造函数(_init)中创建

class Movie:def __init__(self, name, type, index):self.name = namemovie = Movie("八角笼中")
print(movie.name)

(3) 每个对象存储一份,通过对象地址访问
(4) 作用:描述某个对象的数据。
(5) dict:对象的属性,用于存储自身实例变量的字典。

2.2.2 实例方法

(1) 定义

def 方法名称(self, 参数):方法体

(2) 调用:

对象.方法名称(参数)
# 不建议通过类名访问实例方法

(3) 说明
– 至少有一个形参,第一个参数绑定调用这个方法的对象,一般命名为self。
– 无论创建多少对象,方法只有一份,并且被所有对象共享。
(4) 作用:表示对象行为。

2.2.3 跨类调用

# 写法1:直接创建对象
# 语义:老张每次创建一辆新车去
class Person:def __init__(self, name=""):self.name = namedef go_to(self,position):print("去",position)car = Car()car.run()class Car:def run(self):print("跑喽~")lz = Person("老张")
lz.go_to("东北")# 写法2:在构造函数中创建对象
# 语义:老张开自己的车去
class Person:def __init__(self, name=""):self.name = nameself.car = Car()def go_to(self,position):print("去",position)self.car.run()class Car:def run(self):print("跑喽~")lz = Person("老张")
lz.go_to("东北")# 方式3:通过参数传递
# 语义:老张用交通工具去
class Person:def __init__(self, name=""):self.name = namedef go_to(self,vehicle,position):print("去",position)vehicle.run()class Car:def run(self):print("跑喽~")lz = Person("老张")
benz = Car()
lz.go_to(benz,"东北")

3. 三大特征

3.1 封装

3.1.1 数据角度

(1) 定义:将一些基本数据类型复合成一个自定义类型。
(2) 优势:
– 将数据与对数据的操作相关联。
– 代码可读性更高(类是对象的模板)。

3.1.2 行为角度

(1) 定义:
向类外提供必要的功能,隐藏实现的细节。
(2) 优势:
简化编程,使用者不必了解具体的实现细节,只需要调用对外提供的功能。
(3) 私有成员:
– 作用:无需向类外提供的成员,可以通过私有化进行屏蔽。
– 做法:命名使用双下划线开头。
– 本质:障眼法,实际也可以访问。
私有成员的名称被修改为:类名_成员名,可以通过__dict__属性查看。
– 演示

class MyClass:def __init__(self, data):self.__data = datadef __func01(self):print("func01执行了")m01 = MyClass(10)
# print(m01.__data) # 无法访问
print(m01._MyClass__data)
print(m01.__dict__) # {'_MyClass__data': 10}
# m01.__func01() # 无法访问
m01._MyClass__func01()

3.1.3 案例:信息管理系统

3.1.3.1 需求

实现对用户信息的增加、删除、修改和查询。

3.1.3.2 分析

界面可能使用控制台,也可能使用Web等等。
(1) 识别对象:界面视图类 逻辑控制类 数据模型类
(2) 分配职责:
– 界面视图类:负责处理界面逻辑,比如显示菜单,获取输入,显示结果等。
– 逻辑控制类:负责存储用户信息,处理业务逻辑。比如添加、删除等
– 数据模型类:定义需要处理的数据类型。比如用户信息。
(3) 建立交互:

界面视图对象 <----> 数据模型对象 <----> 逻辑控制对象

3.1.3.3 设计

(1) 数据模型类:UserModel
– 数据:编号 id,姓名 name,年龄 login_id,密码 pwd
(2) 逻辑控制类:UserController
– 数据:用户列表 list_user
– 行为:添加用户 add_user,删除用户remove_student,修改用户update_student
(3) 界面视图类:UserView
– 数据:逻辑控制对象controller
– 行为:显示菜单__display_menu,选择菜单项__select_menu,入口逻辑main,
输入学生__input_users,输出学生__display_user,删除学生__delete_user,
修改学生信息__modify_user

3.2 继承

3.2.1 继承方法

(1) 语法:

class 父类:def 父类方法(self):方法体class 子类(父类)def 子类方法(self):方法体儿子 = 子类()
儿子.子类方法()
儿子.父类方法()

(2) 说明:
子类直接拥有父类的方法.
(3) 演示:

class Person:def say(self):print("说话")class Teacher(Person):def teach(self):self.say()print("教学")class Student(Person):def study(self):self.say()print("学习")qtx = Teacher()
qtx.say()
qtx.teach()xm = Student()
xm.say()
xm.study()

3.2.2 内置函数

(1) isinstance(对象, 类型)
对象是否为一种类型
(2) type(类型) == 类型
对象的类型是否是一种类型
(3) 演示

# 对象 是一种 类型: isinstance(对象,类型)
# 老师对象 是一种 老师类型
print(isinstance(qtx, Teacher)) # True
# 老师对象 是一种 人类型
print(isinstance(qtx, Person)) # True
# 老师对象 是一种 学生类型
print(isinstance(qtx, Student)) # False
# 人对象 是一种 学生类型
print(isinstance(p, Student)) # False
# 是的关系
# 老师对象的类型 是 老师类型
print(type(qtx) == Teacher) # True
# 老师对象的类型 是 人类型
print(type(qtx) == Person) # False

3.2.3 继承数据
(1) 语法

class 子类(父类):def __init__(self,父类参数,子类参数):super().__init__(参数) # 调用父类构造函数self.实例变量 = 参数

(2) 说明
子类如果没有构造函数,将自动执行父类的,但如果有构造函数将覆盖父类的。此时必须通过super()函数调用父类的构造函数,以确保父类实例变量被正常创建。
(3) 演示

class Person:def __init__(self, name="", age=0):self.name = nameself.age = age# 子类有构造函数,不会使用继承而来的父类构造函数[子覆盖了父方法,好像它不存在]
class Student(Person):# 子类构造函数:父类构造函数参数,子类构造函数参数def __init__(self, name, age, score):# 调用父类构造函数super().__init__(name, age)self.score = scorets = Person("唐僧",22)
print(ts.name)
kw = Student("悟空", 23, 100)
print(wk.name)
print(wk.score)

3.2.4 定义

(1) 概念: 重用现有类的功能,并在此基础上进行扩展。
(2) 说明:子类直接具有父类的成员(共性),还可以扩展新功能。
(3) 相关知识
– 父类(基类、超类)、子类(派生类)。
– 父类相对于子类更抽象,范围更宽泛;子类相对于父类更具体,范围更狭小。
– 单继承:父类只有一个(例如 Java,C#)。
– 多继承:父类有多个(例如C++,Python)。
– Object类:任何类都直接或间接继承自 object 类。

3.3 多态

3.3.1 定义

(1) 字面意思:对于一种行为有不同表现形态。
(2) 概念:对于父类的一个方法,在不同的子类上有不同体现。
(3) 说明:编码时调用父类方法,运行时传递子类对象执行子类方法。

3.3.2 重写

(1) 定义:在子类定义与父类相同的方法。
(2) 作用:改变父类行为,体现子类个性。

3.3.3 重写内置函数

(1) 定义:Python中,以双下划线开头、双下划线结尾的是系统定义的成员。我们可以在自定义类中进
行重写,从而改变其行为。
(2) str 函数:将对象转换为字符串(对人友好的)
– 演示

class Movie:
def __init__(self, name, type, index):
self.name = name
self.type = type
self.index = index
def __str__(self):
print("%s电影的类型是%s,指数是%s." % (self.name, self.type, self.index))
bjlz = Movie("八角笼中","剧情",690761)
fs = Movie("封神第一部","奇幻",532622)
print(bjlz)
print(fs)

(3) 算数运算符
在这里插入图片描述

(4) 复合运算符重载
在这里插入图片描述

(5) 比较运算重载
在这里插入图片描述

相关文章:

【Python】面向对象(专版提升2)

面向对象 1. 概述1.1面向过程1.2 面向对象 2. 类和对象2.1 语法2.1.1 定义类2.1.2 实例化对象 2.2 实例成员2.2.1 实例变量2.2.2 实例方法2.2.3 跨类调用 3. 三大特征3.1 封装3.1.1 数据角度3.1.2 行为角度3.1.3 案例:信息管理系统3.1.3.1 需求3.1.3.2 分析3.1.3.3 设计 3.2 继…...

Vscode设置滚轮进行字体大小的调节

Vscode设置滚轮进行字体大小的调节 正常的话按 ctrl 或者 ctrl - 进行字体的大小调节 1.打开Vscode&#xff0c;找打设置的图标&#xff0c;在点击设置&#xff0c;或者直接使用快捷键&#xff0c;【ctrl ,】 2. 在搜索框搜索Font Ligatures 3.双击进入settings.json ,找到如…...

【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件

【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件 往期回顾 【QT入门】Qt自定义控件与样式设计之QProgressBar用法及qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QSlider用法及qss-CSDN博客 【QT入门】Qt自定义控件与样式设计之qss的加载方式-CSDN博客 一、最终…...

Spring Validation解决后端表单校验

NotNull&#xff1a;从前台传递过来的参数不能为null,如果为空&#xff0c;会在控制台日志中把message打印出来 Range&#xff1a;范围&#xff0c;最大多少&#xff0c;最小多少 Patten&#xff0c;标注的字段值必须符合定义的正则表达式&#xff08;按照业务规则&#xff0…...

Harmony鸿蒙南向驱动开发-UART接口使用

功能简介 UART指异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;&#xff0c;是通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工传输。 两个UART设备的连接示意图如下&#xff0c;UART与其他模块一…...

【示例】MySQL-事务控制示例:账户转账-savepoint关键字

前言 本文讲述MySQL中的事务&#xff0c;以账户转账为例&#xff0c;体会事务的概念&#xff0c;并讲解事务相关的一个关键字用法&#xff1a;savepoint 示例 数据准备 drop table if exists account;create table account(id int primary key AUTO_INCREMENT comment ID,n…...

STM32使用标准版RT-Thread,移植bsp中的板文件后,想使用I/O设备模型,使用串口3或者串口4收发时,发现串口3或者串口4没反应

STM32移植RT-Thread出现的问题及解决办法 问题原因解决方法 问题 使用标准版RT-Thread,移植bsp中的板文件后&#xff0c;想使用I/O设备模型&#xff0c;使用串口3或者串口4收发时&#xff0c;发现串口3或者串口4没反应。出现问题&#xff1a;程序一直跑在 while (__HAL_UART_…...

MVCC(解决MySql中的并发事务的隔离性)

MVCC 如何保证事务的隔离性&#xff1f; 1.排他锁&#xff1a;如一个事务获取了一个数据行的排他锁&#xff0c;其他事务就不能再获取改行的其他锁。 2.MVCC&#xff1a;多版本并发控制。 MVCC&#xff1a; 1.隐藏字段 1.DB_TRX_ID&#xff1a;最近修改事务的id。默认值从0开…...

第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证

文章目录 第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证在处理请求之前在 CSP 中进行身份验证。 第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证 在处理请求之前在 CSP 中进行身份验证。 这是…...

家庭网络防御系统搭建-siem之security onion 安装配置过程详解

本文介绍一下security onion的安装流程&#xff0c;将使用该工具集中管理终端EDR和网络NDR sensor产生的日志。 充当SIEM的平台有很多&#xff0c;比如可以直接使用原生的elastic以及splunk等&#xff0c;security onion的优势在于该平台能够方便的集成网络侧&#xff08;比如…...

【MATLAB源码-第23期】基于matlab的短时傅里叶STFT信号变换仿真,得到信号的时频曲线图。

1、算法描述 短时傅里叶变换&#xff08;Short-Time Fourier Transform&#xff0c;STFT&#xff09;是傅里叶变换的一种扩展&#xff0c;用于分析信号在时域和频域上的变化。描述如下&#xff1a; 1. **时域与频域分析**&#xff1a; - 信号通常以时域的形式表示&#xf…...

链表中倒数最后k个结点【c语言】

#include <stdio.h> #include <stdlib.h>typedef struct Node {int data;struct Node* next; } Node, *LinkedList;// 创建一个新节点 Node* createNode(int data) {Node* newNode (Node*)malloc(sizeof(Node));if (newNode NULL) {printf("Error! Unable t…...

在一台恢复测试机器上验证oracle备份有效性

一 目的 定期将生产环境oracle数据库恢复到一台测试环境数据库服务器上&#xff0c;以验证备份是否有效&#xff0c;是否能正常恢复。 二 环境 这里以恢复orcl1库为例&#xff0c;计划在orcl这个实例上进行恢复测试。 三 实验步骤 3.1 在目标端创建和源端一样的备份目录 ①…...

Harmony鸿蒙南向驱动开发-MIPI CSI

CSI&#xff08;Camera Serial Interface&#xff09;是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版&#xff0c;主要由应用层、协议层、物理层组成&#xff0c;最大支持4通道数据传输、单线传输速度高达1Gb/s。 物理层支持HS&#xff08;High Speed&…...

最优算法100例之43-包含min函数的栈

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数,在该栈中,调用min,push及pop的时间复杂…...

什么是One-Class SVM

1. 简介 单类支持向量机&#xff0c;简称One-Class SVM(One-Class Support Vector Machine)&#xff0c;是一种用于异常检测的监督学习算法。其主要目标是找出数据集中的异常或罕见样本&#xff0c;而不需要大量的正常样本用于训练。这使其在处理高维数据和非常稀疏的异常检测问…...

【Ubuntu】远程连接乌班图的方式-命令行界面、图形界面

​​​​​​系统环境&#xff1a;ubuntu-22.04.2-amd64.iso 连接工具&#xff1a;MobaXterm、windows自带远程桌面mstsc.exe 重置root密码&#xff1a;Ubuntu默认root密码是随机的&#xff0c;需要使用命令sudo passwd 进行重置。 一、命令行界面-SSH连接 1.1 SSH服务安装 …...

Ubuntu无网络标识的解决方法

1.出现的情况的特点 2.解决办法 2.1 进入root并输入密码 sudo su 2.2 更新NetworkManager的配置 得先有gedit或者vim&#xff0c;两个随意一个&#xff0c;这里用的gedit&#xff0c;没有就先弄gedit&#xff0c;有的话直接下一步 apt-get install gedit 或者vim apt-get ins…...

基于springboot实现课程答疑管理系统项目【项目源码+论文说明】

基于springboot实现课程答疑管理系统演示 摘要 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个专门适应师生交流形式的网站。本文介绍了课程答疑系统的开发全过程。通过分析企业对于课程答疑系统的需求&#xff0c;创建了…...

【JVM】面试题汇总

JVM1. 什么是JVM&#xff1f;2. 了解过字节码文件的组成吗&#xff1f;3. 什么是运行时数据区4. 哪些区域会出现内存溢出5. JVM在JDK6-8之间在内存区域上有什么不同 6. 类的生命周期 7. 什么是类加载器&#xff1f;类加载器有哪几种 8. 什么是双亲委派机制&#xff1f;有什么好…...

趣谈 Rust 的 Copy trait 和 Clone trait

一、Copy trait 的关键作用 Rust 程序中的变量可以分成两类&#xff1a;实现 Copy trait 的和没实现 Copy trait 的。这有啥区别&#xff1f;当然很重要! 实现 Copy trait 的变量&#xff1a; 不存在所有权问题&#xff0c;可以随意赋值给其他变量&#xff0c;可以随意当参数…...

02 - Git 之命令 +

1 Git相关概念 1.1 以下所谈三个区&#xff0c;文件并不只是简单地在三个区转移&#xff0c;而是以复制副本的方式转移 使用 Git 管理的项目&#xff0c;拥有三个区域&#xff0c;分别是 Working area工作区&#xff08;亦称为 工作树Working Tree&#xff09;、stage area …...

每日一练(力扣)

我的思路是暴力枚举: 情况1:相同&#xff0c;就让子串和原串同时后移继续比较 情况2:不相同&#xff0c;就只让原串后移 public int strStr(String haystack, String needle) {if (haystack.length() < needle.length()){return -1;}for (int i 0; i < h…...

JWT详解及实战教程

目录 1.什么是JWT 2.JWT能做什么 3.为什么是JWT 基于传统的Session认证 基于JWT认证 4.JWT的结构是什么? 5.使用JWT 6.封装工具类 7.整合springboot 1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way…...

vue通过echarts实现数据可视化

1、安装echarts cnpm install echarts -Sechart官方图表示例大全&#xff1a;https://echarts.apache.org/examples/zh/index.html#chart-type-line 2、代码实现 <template><div><div class"box" ref"zhu"></div><div class&…...

react17中使用setState导致了死循环

在使用setState时发生死循环的错误&#xff0c;可能的原因是在这三个地方使用了setState&#xff1a; componentDidUpdate&#xff1b;componentWillUpdate&#xff1b;render。 为什么会这样? 每次渲染页面的时候就会调用render&#xff0c;render里面是setState&#xff0…...

2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题是由安全生产模拟考试一点通提供&#xff0c;P气瓶充装证模拟考试题库是根据P气瓶充装最新版教材&#xff0c;P气瓶充装大纲整理而成&#xff08;含2024年P气瓶…...

Python学习笔记(一)

一、简述实例属性与类属性的区别以及实例方法与类方法的区别 &#xff08;一&#xff09;实例属性与类属性 1、实例属性是定义在类的内部&#xff0c;是每个类都共有的属性&#xff1b;2、实例属性是属于对象的&#xff0c;每个对象的可以根据自己的需要不一样&#xff0c;生…...

记一次http访问超时服务器端调试

问题&#xff1a;http访问服务器时没有返回&#xff0c;没有超时&#xff0c;一直在阻塞 处理过程&#xff1a;telnet端口能连上&#xff0c;服务端程序也不存在处理时间过长的情况。 说明tcp连接没问题。推测是客户端连接后再发起请求&#xff0c;服务端阻塞了。因为很多客户…...

C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”&#xff0c;项目中由于各方面因素&#xff0c;总是有人抱怨存在内存泄漏&#xff0c;系统长时间运行之后&#xff0c;可用内存越来越少&#xff0c;甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一&#xff0c;因为除非用完内存或调用…...

网站空间租用费用/广告投放公司

6月5日下午&#xff0c;中国国际广播电台(以下简称“国广”)俄东中心和成都电视台经济资讯频道联合摄制的纪录片《针传》在成都举行首映。这是一部讲述中国传统文化的纪录片&#xff0c;该片介绍了中国针灸悠久的历史、发展和传承。成都针灸医师邹群和她的徒弟们也来到首映仪式…...

广州培训做网站/佛山今日头条

点击上方 蓝字 关注我们给大家推荐几个我经常看的一些公众号&#xff0c;当你迷茫的时候刷一下这些公众号&#xff0c;就可以知道自己的不足&#xff0c;小编经常在地铁刷。从这些公众号我看到了同一个问题的不同描述和思路&#xff0c;十分精彩&#xff0c;大家可以关注一下他…...

做盘石信用认证网站/网络销售推广公司

每日签到的功能&#xff0c;供大家参考&#xff0c;具体内容如下首次签到获得1个积分,第二次签到获得2个积分,第三次签到获得3个积分,以此类推但是签到必须每天连续积分才可以递增,如果有中断再次签到时获得积分仍然从1开始递增;user: id,username,count,point,sign_timesign.h…...

昆明哪些做网站建设的公司/windows优化大师免费版

本节书摘来自异步社区《JavaScript核心概念及实践》一书中的第2章&#xff0c;第2.2节&#xff0c;作者&#xff1a;邱俊涛著&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 2.2 变量 变量&#xff0c;是对值的存储空间的引用&#xff0c;通过一个名字将一个…...

企业网站日常维护/搜狗链接提交入口

1 新建wpf项目 2 新建wpf用户控件库 3 添加普通类&#xff0c;让其继承于Control类&#xff0c;添加两个依赖属性Text和IsEnable&#xff0c;并在静态构造函数中&#xff0c;调用DefaultStyleKeyProperty.OverrideMetadata方法 using System; using System.Collections.Gene…...

wordpress 自动保存图片/百度地图导航

PHP 表单验证 本章节我们将介绍如何使用PHP验证客户端提交的表单数据。 PHP 表单验证 在处理PHP表单时我们需要考虑安全性。 本章节我们将展示PHP表单数据安全处理&#xff0c;为了防止黑客及垃圾信息我们需要对表单进行数据安全验证。 在本章节介绍的HTML表单中包含以下输入字…...