【python】面向对象编程



一、函数大全

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)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值