python 面向对象基础

本文介绍了Python中的面向对象编程概念,包括类的继承性(如Mule类继承Horse和Donkey),多态性(通过Animal子类重写父类方法),异常处理(try-except结构),以及文件操作(如读写、路径处理和资源管理)。
摘要由CSDN通过智能技术生成

继承性

class Horse:
	def __init__(self, name):
		self.name = name
	def run(self):
		print('马在跑')
	def show_info(self):
		return "the name of the horse:{0}".format(self.name)
class Donkey:
	def __init__(self, name):
		self.name = name
	def run(self):
		print('驴在跑')
	def show_info(self):
		return "the name of the donkey:{0}".format(self.name)
	def roll(self):
		print("驴打滚...")
class Mule(Horse, Donkey):
	def __init__(self, name, age):
		super().__init__(name)
		self.age = age
	def show_info(self):# 对父类方法的重写
		return "骡:{0},{1}岁了".format(self.name, self.age)
		
  • 私有成员不被继承
  • 支持多继承,继承多个父类优先继承左侧
  • 只有调用父类析构函数时需要使用super其他的不需要

多态性

  • 多态:指的是一类事物有多种形态,比如aniaml类有,cat,dog,pig,均为animal的不同形态
  • 多态性:指的是同一事物在不同情境下有不同的效果
class Animal:
    def __init__(self, name):
        self.name = name

    def show_info(self):
        print("the name of the horse:{0}".format(self.name))


class Donkey(Animal):
    def __init__(self, name):
        self.name = name

    def show_info(self):
        print("the name of the donkey:{0}".format(self.name))

class Mule(Animal):
    def __init__(self, name):
        self.name = name

    def show_info(self):
        print("骡:{0}".format(self.name))
def func(x):
    x.show_info()

d=Donkey('dd')
m=Mule('mm')
func(d)
func(m)

在这里插入图片描述
func函数实现了传入参数不同,调用同名函数却执行了不同的操作,这就是多态性。
多态是一种python的特性,多态是基于继承实现的,子类对父类方法的重写实际上就是多态的实现形式。

异常

使用try-except

i=input('请输入数字:')
n=8888
try:
	#可能发生异常的代码
	result = n/ int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:
	#异常处理
	print("不能除以0,异常{}".format(e))
#except (ZeroDivisionError,ValueError) as e:
#    print("不能除以0,异常{}".format(e))
#同时捕获多个异常,减少代码量

ZeroDivisionError:具体异常类型
e:异常对象,是一个变量
制定具体异常时,只有发生此类型异常才会执行内部语句,只使用except可以捕获所有类型的异常
多个异常类型

try:
	#可能发生异常的代码
except 异常类型1:
	#异常处理
except 异常类型2:
	#异常处理
except 异常类型3:
	#异常处理
except:
	处理其他异常

嵌套的异常语句

i = input('请输入数字:')
n = 8888
try:
    result = n / int(i)
    try:
        print(result)
        print('{0}除以{1}等于{2}'.format(n, i, result))
    except ZeroDivisionError as e:
        print("不能除以0,异常{}".format(e))
except ValueError as e:
    print("输入的是无效数字,异常{}".format(e))
finally:
	#释放资源

使用finally释放资源:无论有无异常都会执行finally代码块

自定义异常

需要继承Exception类或其子类

class ZhijieketangException(Exception):
	def __init__(self, message):
		super().__init__(message)

文件读取

文件打开:open(file, mode='r', encoding=None, error=None)

  • file:要打开的文件,如果是字符串,表示文件名,文件名既可以是绝对路径也可以是相对路径。如果是整数,则表示已经打开的文件。

  • mode:用于设置文件的打开模式,用字符串表示

  • encoding:指定打开文件时的编码,默认时UTF-8,主要用于打开文本文件

    1. rt或r:只读
    2. wt或w:只写
    3. xt或x:独占创建模式
    4. at或a:追加模式
    5. rb:二进制文件模式,类似于rt
    6. wb:二进制文件模式,类似于wt
    7. xb:二进制文件模式,类似于xt
    8. ab:二进制文件模式,类似于at
    9. r+:读写模式,如果文件不存在,则抛出异常
    10. w+:读写模式,如果文件不存在,则创建文件
    11. a+:追加文本文件模式,如果文件不存在,则创建文件
    12. rb+:二进制文件模式,类似于r+
    13. wb+:二进制文件模式,类似于w+
    14. ab+:二进制文件模式,类似于a+
  • errors:用来指定在文本文件发生编码错误的时候如何处理

f=open('test.txt','w+')
f.write('world')
print('创建文件test.txt,写入world')

f=open('test.txt','r+')
f.write('hello')
print('打开文件test.txt,hello覆盖文件内容')

f=open('test.txt','a')
f.write(' ')
print('打开文件test.txt,文件末尾追加空格')

#fname='D:\\STUDY\\python\\125\\test.txt'
fname=r'D:\STUDY\python\125\test.txt'
f=open(fname,'a+')
f.write('world')
print('打开文件test.txt,文件末尾追加world')

fname=r'D:\STUDY\python\125\test.txt':采用原始字符串表示绝对路径文件名,其中反斜杠不需要转义
fname='D:\\STUDY\\python\\125\\test.txt':采用普通字符串表示绝对路径文件名,其中反斜杠需要转义(可以用/代替\\

文件关闭

  1. 使用f.close()关闭文件
  2. 使用with as自动资源管理
f_name = 'text.txt'
with open('text.txt', 'r') as f:
	for line in f:
        print(line.strip())

读写文本文件

  • read(size=-1):从文件中读取字符串,size限制读取的字符数,size=-1指对读取的字符数没有限制。
  • readline(size=-1):在读取到换行符或文件为时返回单行字符串,如果已经到文件尾,则返回一个空字符串,size限制读取的字符数,size=-1指对读取的字符数没有限制。
  • readlines():读取文件数据到一个字符串列表中,每一行数据都是列表的一个元素。
  • write(s):将字符串s写入文件中,并返回写入的字符数。
  • writelines(lines):像文件中房协如一个字符串列表,不添加行分隔符,因此通常为每一行末尾都提供行分隔符。
  • flush():刷新缓冲区,在文件没有关闭的情况下将数据写入文件中。
f_name = 'src_file.txt'

with open(f_name, 'r', encoding='utf-8') as f:
    lines = f.readlines()
    copy_f_name = 'dest_file.txt'
    with open(copy_f_name, 'w', encoding='utf-8') as copy_f:
        copy_f.writelines(lines)
        print('文件复制成功')
  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值