【python】面向对象编程

news2024/9/23 15:32:01

文章目录

  • 一、函数大全
    • 1.1 匿名函数 lambda
    • 1.2 过滤函数 filter
    • 1.3 format
    • 1.4 try和except
    • 1.5 位置参数和关键字参数
  • 二、类与对象
    • 2.1创建对象
    • 2.2 封装的实现方式
    • 2.3 继承
    • 2.4方法重写
    • 2.5 object 类
      • 2.5.1 __str()__
      • 2.5.2 dict()
      • 2.5.3 len()
      • 2.5.4 add()
      • 2.5.5 new()
      • init()
    • 2.6 多态的实现
  • 三、文件相关操作
    • 3.1 编码格式的介绍
    • 3.2 文件的读写操作
    • 3.3 常用的文件打开模式
    • 3.4 文件对象的常用方法
    • 3.5 with 语句(上下文管理器)
    • 3.6 os语句
    • 3.7 os.path模块操作目录相关函数
  • 四、其他
    • 4.1 traceback模块



一、函数大全

1.1 匿名函数 lambda

匿名函数的适用范围,函数仅使用一次,无需重复使用时。
编写命令是仅能使用一行代码

定义方法:lambad 参数列表:lambada体

代码如下:

def zhangzengyang(opr):
    if opr =='+':
        return lambda a,b:(a+b)
    else:
        return lambda a,b:(a-b)
f1 = zhangzengyang('+')
f2 = zhangzengyang('-')
print("10+5={}".format(f1(10,5)))
print("10-5={}".format(f2(10,5)))

1.2 过滤函数 filter

作用:对一个可迭代对象进行过滤

filter (function,iterable)

1.3 format

<模板字符串>.format(<逗号分隔的参数>)

print('{}爱吃鱼,{}爱吃骨头'.format('小猫','小狗'))

输出结果:
在这里插入图片描述

1.4 try和except

try和expect用于捕获和处理语句块异常,其语法结构如下:

try:
    a = int(input("输入被除数:"))
    b = int(input("输入除数:"))
    c = a / b
    print("您输入的两个数相除的结果是:", c )
except (ValueError, ArithmeticError):
    print("程序发生了数字格式异常、算术异常之一")
except :
    print("未知异常")
print("程序继续运行")
程序运行结果为:

事实上,不管程序代码块是否处于 try 块中,甚至包括 except 块中的代码,只要执行该代码块时出现了异常,系统都会自动生成对应类型的异常。但是,如果此段程序没有用 try 包裹,又或者没有为该异常配置处理它的 except 块,则 Python 解释器将无法处理,程序就会停止运行;反之,如果程序发生的异常经 try 捕获并由 except 处理完成,则程序可以继续执行。

1.5 位置参数和关键字参数

位置参数:

def 函数名(*args)

pass

位置参数相当于一个数组,可以输入多个参数

关键字参数:

def 函数名(**args)

pass

关键字参数相当于一个字典

二、类与对象

2.1创建对象

创建类的语法

class 类名:
pass…


对象创建方法

class Student1:
    native_pace='黑龙江'
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print('张曾洋666')
    @staticmethod
    def method():
        print('staticmethod进行了修饰,属于静态方法')
    @classmethod
    def cm(cls):
        print('我是类方法,因为我使用了classmethod进行修饰')
stu=Student1('张三','18')
print(stu.name,stu.age)
stu.eat()
Student1.eat(stu)#与stu.eat()功能相同,都为调用Student1中的eat方法

2.2 封装的实现方式

class Student:
	def __int__(self,name,age):
		self.name=name
		self.__age=age
	def show(self):
		print(self.name,self.__age)
		

2.3 继承

语法格式

class 子类类名(父类1,父类2):

pass

  1. 如果类没有继承任何类,则默认继承object
  2. Python支持多继承
  3. 定义子类时,必须在其构造函数中调用父类的构造函数
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)
class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
class Teacher(Person):
    def __init__(self,name,age,teachofyear):
        super().__init__(name,age)
        self.teachofyear=teachofyear
stu=Student('张三',20,'1001')
teacher=Teacher('李四',34,10)
stu.info()
teacher.info()`

2.4方法重写

在父类中已经构建的函数或成员可以在子类中重写

  1. 如果子类对继承自父类的某个属性或方法不满意,可以在子类中对其进行重新编写
  2. 子类重写后的方法中可以通过super().xxx()调用父类中被重写的方法

2.5 object 类

  1. object类是所有类的父类,因此所有类都有object类的属性和方法。其有很多特殊的方法下面来一一介绍

2.5.1 str()

Object有一个__str__()方法,用于返回一个对于“对象的描述”,对应用于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对__str__()进行重写

2.5.2 dict()

获得类对象或实例对象所绑定的所有属性和方法的字典

2.5.3 len()

通过重写__len__()方法,让内置函数len()的参数可以是自定义类型

2.5.4 add()

通过重写__add__()方法,可以使自定义对象具有“+”功能

2.5.5 new()

用于创建对象

init()

对创建的对象进行初始化

2.6 多态的实现

多态就是“具有多种形态”,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程根据变量所引用的对象的类型,动态决定调用哪个对象中的方法
不太确切的说:python没有多态

class Animal(object):
	def eat(self):
		print('动物会吃')
class Dog(Animal):
	def eat(self):
		print('狗吃骨头...')
class Cat(Animal):
	def eat(self):
		print('猫吃鱼')
class Person:
	def eat(self):
		print('人吃五谷杂粮')
def fun(obj):
	obj.eat()
fun(Cat())
fun(Dog())
fun(Animal())
fun(Person())

这里人的类和动物类不属于同一种类,但是他们都可以通过eat()函数调用,因为他们都继承父类object

三、文件相关操作

3.1 编码格式的介绍

Python的解释器使用的使Unicode(内存)
.py文件在磁盘上使用UTF-8存储(外存)
在这里插入图片描述

3.2 文件的读写操作

使用内置函数open()创建文件对象,其语法规则为
在这里插入图片描述

3.3 常用的文件打开模式

打开模式描述
r以只读模式打开文件,文件的指针会放在文件的开头
w以只写模式打开文件,如果文件不存在则自动创建文件,原文件存在,则覆盖原有内容,文件指针放在文件的开头
a以追加的模式打开文件,如果文件不存在则创建,文件指针在文件开头,文件存在,则在文件末尾追加内容,文件指针在原文件末尾
b以二进制形式打开文件,不能单独使用,需要与其他模式一起使用,rb,或wb
+以只读方式打开文件,不能单独使用,需要与其他模式一起使用,a+

3.4 文件对象的常用方法

方法名说明
read([size])从文件中读取size个字节或字符的内容返回。若省略[size],则一次性读取全部内容
readline()从文本文件中读取一行内容
readlines把文本文件中的每一行都作为独立的字符串对象,并将这些对象放入列表中返回
write(str)将字符串str内容写入文件
weitelins(s_list)将字符串列表s_list写入文本文件,不添加换行符
seek(offset[,whence])把文件指针移动到新的位置,offset表示相对于whence的位置; offset:为正是从前往后动,为负从后往前动; whence不同的值代表不同含义: 0:从文件头开始计算(默认值) 1:从当前位置开始计算 2:从文件尾开始计算
tell()返回文件指针的当前位置
flush()把缓冲区的内容写入文件,但不关闭文件
close()把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源

3.5 with 语句(上下文管理器)

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的
不用with语句时完成图片的复制操作:

src_file= open('logo.png','rb')
target_file=open('copylogo.png','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()

使用with语句完成图片复制操作:

with open('logo.png','rb') as src_file
	with open('copy2logo.png','wb') as target_file
		target_file.write(src_file.read() )

两者对比一下,可以省略关闭的命令

3.6 os语句

个人理解:相当于shell操作命令写成了代码的形式
os模块操作目录相关函数

函数说明
getcwd()返回当前的工作目录
listdir(path)返回指定路径下的文件和目录信息
mkdir(path[,mode])创建目录
makedirs(path1/path2…[,mode])创建多级目录
rmdir(path)删除目录
removedirs(path1/path…)删除多级目录
chdir(path)将path设置为当前工作目录

下面举例说明

import os
print(os.getcwd())#返回当前文件路径
print(os.listdir('../python_project1'))#返回指定路径下的信息
os.mkdir('张曾洋')#创建文件夹

3.7 os.path模块操作目录相关函数

函数说明
abspath(path)获取文件或目录的绝对路径
exists(path)用于判断文件或目录是否存在,如果存在返回True,否则返回False
join(path,name)将目录与目录或文件名拼接起来
splitext()分离文件名和扩展名
basename(path)从一个目录中提取文件名
dirname(path)从一个路径中提取文件路径,不包括文件名
isdir(path)用于判断是否为路径

四、其他

4.1 traceback模块

traceback可以打印程序异常信息
在日常开发中,我们会做一些基本的异常处理,但是有时候只能打印我们处理的结果或者将异常打印出来,不能直观的知道在哪个文件中的哪一行出错:

def func(num1,num2):
	try:
		x=num1/num2
		return x,y
	except Exception as e:
		print("错误信息:",e)
func(1,0)

在这里插入图片描述
而使用Python中traceback模块来进行处理可以直观异常信息:

import traceback
def func1(num1, num2):
    try:
        x = num1 * num2
        y = num1 / num2
        return x, y
    except:
        traceback.print_exc()
func1(1, 0)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识C语言(下)

写在前面 好了,现在我们开始C语言的第二个部分.今天我们需要看下面几个知识点,都是非常简单的,我们主要认识一下. 数组 我们知道一个一个属性可以用一个类型去表示,那么我想问的是如果是一个属性的多个呢?也就是多个一样的东西,此时我们就要使用数组来进行表示,所谓的数组就…

22. 输入和输出

1. 输出格式美化 (1) 如果你希望输出的形式更加多样&#xff0c;可以使用 str.format() 函数来格式化输出值。 (2) 如果你希望将输出的值转成字符串&#xff0c;可以使用 repr() 或 str() 函数来实现。   str()&#xff1a; 函数返回一个用户易读的表达形式。   repr()&am…

产品原型设计方法

产品原型设计方法1. 色彩选择与按钮设计1.1色彩选择1.2 按钮设计2. 使用原型设计中的基础元素2.1 使用文字元素2.2 使用图标元素3. 设计导航菜单栏和卡片式布局3.1设计导航菜单栏4.3 设计卡片式布局4. 使用UI框架4.1 使用UI框架的好处4.2 常用的UI框架1. 色彩选择与按钮设计 1…

K8s:通过 kubectl 插件 Kubepug 实现集群升级检查(废弃API资源检查)

写在前面 分享一个小工具&#xff0c;可用于 版本升级的 废弃 API 对象检查博文内容涉及&#xff1a; kubepug 离线安装&#xff0c;配置 kubectl 插件kubepug 两种方式离线使用 Demo 理解不足小伙伴帮忙指正 昔我往矣&#xff0c;杨柳依依。今我来思&#xff0c;雨雪霏霏。 —…

【HBase入门】1. HBase基础

简介 Hadoop 从 1970 年开始&#xff0c;大多数的公司数据存储和维护使用的是关系型数据库大数据技术出现后&#xff0c;很多拥有海量数据的公司开始选择像Hadoop的方式来存储海量数据Hadoop使用分布式文件系统HDFS来存储海量数据&#xff0c;并使用 MapReduce 来处理。Hadoo…

【Ajax】同源策略、跨域和JSONP

一、同源策略什么是同源如果两个页面的协议&#xff0c;域名和端口都相同&#xff0c;则两个页面具有相同的源。例如&#xff0c;下表给出了相对于 http://www.test.com/index.html 页面的同源检测&#xff08;如果没有写端口号&#xff0c;默认是80&#xff09;&#xff1a;UR…

开篇点睛——Elasticsearch

在互联网当中我们的查询的信息主要包括文章、视频、图片、网站信息等各式各样的复杂海量信息。怎么才能快速、准确的检索到我们想要的信息呢? 传统意义上根据数据的格式&#xff0c;我们会将数据分为三个大类 结构化数据非结构化数据半结构化数据 接下来我们详细的了解一下这…

Day07 - 面向对象

1. 面向对象概述 面向对象是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的&#xff0c; 面向对象方法 &#xff0c;把相关的数据和方法组织为一个整体来看待&#xff0c;从更高的层次来进行系统建模&a…

开发人员必备的 15 个备忘单

随着网络编程技术的快速发展&#xff0c;我们必须学习很多新东西。有些语言和框架非常复杂&#xff0c;您可能记不住所有的语法或方法。备忘单是易于访问的笔记。当有人在过去目睹任何有帮助或有价值的事情时&#xff0c;包括我自己&#xff0c;我们都会做笔记。但是&#xff0…

Vue 快速入门(四)

前面已经介绍Vue常用指令的基本应用&#xff0c;这篇介绍Vue的一些特殊属性的使用。 01 - 计算属性Computed 计算属性关键词&#xff1a;Computed。 计算属性在处理一些复杂逻辑时是很有用的。 普通的写法 比如字符串反转普通写法&#xff0c;如下&#xff1a; <!DOCTYPE h…

Godot根据遮罩图移动粒子

前言 目前UI粒子特效unity引擎比较多&#xff0c;也好找资料&#xff0c;但是一般都是利用模型&#xff0c;使用3D粒子伪装2D效果。 Godot中也可以做到这一点&#xff0c;并且Godot有专门的2D粒子系统&#xff0c;可以通过一张遮罩图对粒子的位置进行设置。 godot粒子教程 …

nginx学习笔记6(小d课堂)

高并发-服务端缓存前置 我们现在启动了我们的一个jar包。 这次我们的nginx配置文件只保留这个。 我们先更改了它的文件名称。 然后我们现在利用默认的先去复制一份nginx配置文件&#xff1a; 我们这样就初始化完了我们的nginx配置文件。 记得加上我们的分号。 然后我们再重启…

AcWing第87场周赛题解

抱歉&#xff0c;3题只有前2题&#xff0c;第三题投入产出比太低&#xff0c;就不做了 一&#xff0c;移动棋子 4797. 移动棋子 - AcWing题库 题目 难度&#xff1a;简单 思路 直接套dfs模板&#xff0c;起点通过输入时得到&#xff0c;终点&#xff08;3&#xff0c;3&am…

Multiple Dimension Input 处理多维特征的输入

文章目录6、Multiple Dimension Input 处理多维特征的输入6.1 Revision6.2 Diabetes Dataset 糖尿病数据集6.3 Logistic Regression Model 逻辑斯蒂回归模型6.4 Mini-Batch&#xff08;N samples&#xff09;6.5 Neural Network 神经网络6.6 Diabetes Prediction 糖尿病预测6.6…

Exadata存储服务器(又称Exadata存储单元)

存储单元可以说是让Exadata如此大规模普及并且使用效果优异的核心要素。 I/O性能问题始终是Exadata存储或者存储服务器尽力去解决的问题。 Exadata存储服务器概述 Exadata数据库一体机通常预装了3类硬件&#xff1a; 数据库计算节点服务器存储服务器极速的InfiniBand存储交…

离散数学与组合数学-03函数

文章目录离散数学与组合数学-03函数3.1 函数基本概念3.1.1 函数的定义3.1.2 函数举例3.1.3 函数的数量3.1.4 关系与函数的差别3.2函数的类型3.2.1 函数类型3.2.2 函数类型的必要条件3.2.3 函数类型的数学化描述3.2.4 函数类型的证明3.3 函数的运算3.3.1 函数的复合运算3.3.2 函…

统计学习方法 学习笔记(1)统计学习方法及监督学习理论

统计学习方法及监督学习理论1.1.统计学习1.1.1.统计学习的特点1.1.2.统计学习的对象1.1.3.统计学习的目的1.1.4.统计学习的方法1.1.5.统计学习的研究1.1.6.统计学习的重要性1.2.统计学习的分类1.2.1.基本分类1.2.1.1.监督学习1.2.1.2.无监督学习1.2.1.3.强化学习1.2.1.4.半监督…

【HBase入门】2. 集群搭建

安装 上传解压HBase安装包 tar -xvzf hbase-2.1.0.tar.gz -C ../server/ 修改HBase配置文件 hbase-env.sh cd /export/server/hbase-2.1.0/conf vim hbase-env.sh # 第28行 export JAVA_HOME/export/server/jdk1.8.0_241/ export HBASE_MANAGES_ZKfalsehbase-site.xml vim…

【算法】洗牌算法

目录1.概述2.代码实现2.1.暴力法2.2.Fisher-Yates 洗牌算法3.应用本文参考&#xff1a; LeetCode 384. 打乱数组 1.概述 &#xff08;1&#xff09;洗牌算法可以理解为&#xff1a;设计算法来打乱一个没有重复元素的数组 nums&#xff0c;并且打乱后&#xff0c;数组的所有排列…

使用C++实现学委作业管理系统

开发环境学委作业管理系统在 Microsoft Visual Studio 2013 编译器开发的 MFC 项目&#xff0c;计算机使用的系统是 window10。1.2 基本原理与技术要求熟悉文件读写、mfc 基本知识、c 类运用、链表使用、排序算法、Microsoft Visual Studio 2013 编译器的使用。1.3 需求说明学委…