今天享学课堂给大家介绍一下关于Python3极简教程之类、模块、错误和异常、文件的详细介绍,下面我们一起来看一下吧。
类
面向对象设计思想是Class抽象的,Instance一个个具体的Class,比如学生是抽象的Class,而张三李四就是一个个具体学生。
定义
Class命名法。仅供內部用的Class,名称前会加一个底线。类定义一般格式:
classStudent:
pass
#或者
classDeveloper(object):
pass
object表示该类是从哪个类继承下来的,object是最终的父类。
classDeveloper(object):
#定义类属性
name='2xkt'
#变量名两个下划线开头,定义私有属性,这样在类外部无法直接进行访问,类的私有方法也是如此
__sex=0
#定义构造方法
def__init__(self,name,site,sex):
self.name=name
self.site=site
self.__sex=sex
#类方法
defget_sex(self):
returnself.__sex
defset_sex(self,sex):
self.__sex=sex
#调用:
if__name__=='__main__':
#实例化类
print(developer.site,developer.get_sex())#访问类的属性和方法
注意:以单下划线开头的表示的是protected类型的变量或方法,即保护类型,只能允许其本身与子类进行访问,不能用于frommoduleimport*。
单继承
classDeveloper(object):
#定义类属性
name='WuXiaolong'
#变量名两个下划线开头,定义私有属性,这样在类外部无法直接进行访问,类的私有方法也是如此
__sex=0
#定义构造方法
def__init__(self,name,site,sex):
self.name=name
self.site=site
self.__sex=sex
#类方法
defget_sex(self):
returnself.__sex
defset_sex(self,sex):
self.__sex=sex
#单继承
classAndroidCoder(Developer):
coder_id=1024
#定义构造方法
def__init__(self,name,site,sex,coder_id):
#调用父类构造方法
#Developer.__init__(self,name,site,sex)#老办法
super(AndroidCoder,self).__init__(name,site,sex)#采用新式
self.coder_id=coder_id
#重写父类的方法
defset_sex(self,sex):
self.__sex=sex
print('这是个秘密')
defget_sex(self):
returnself.__sex
#调用:
if__name__=='__main__':
#单继承
print(androidCoder.set_sex(2))
注意:super继承,要求最顶层的父类一定要继承于object,这样就可以利用super()函数来调用父类的init()等函数。
多继承
B继承A,C继承B
以上面的单继承为例,AndroidCoder继承了Developer,现在让PythonCoder继承AndroidCoder:
#多继承,B继承A,C继承B
classPythonCoder(AndroidCoder):
#定义构造方法
def__init__(self,name,site,sex,coder_id):
#调用父类构造方法
super(PythonCoder,self).__init__(name,site,sex,coder_id)
#调用:
if__name__=='__main__':
print(androidCoder.get_sex())
注意:多继承圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,Python会调用子类的;
Z继承X、Y
classJavaCoder(object):
java_id=1
#定义构造方法
def__init__(self,java_id):
self.java_id=java_id
print('来自JavaCoder')
classFullStackCoder(AndroidCoder,JavaCoder):
#定义构造方法
def__init__(self,name,site,sex,coder_id):
#调用父类构造方法
super(FullStackCoder,self).__init__(name,site,sex,coder_id)
JavaCoder.__init__(self,coder_id)#这里需要使用老办法
#调用:
if__name__=='__main__':
模块
Python模块跟Java里包概念差不多,使用import语句导入。
import语句
##导入模块
print(developer.site)
__name__属性
if__name__=='__main__':
pass
from…import语句
从模块导入指定内容或者*代表全部:
m=hello1(666,999)
作用域
正常的函数和变量名是公开的(public),可以被直接引用;以两个下划线开头,定义私有(private),这样在类外部无法直接进行访问;以单下划线开头的表示的是protected类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于frommoduleimport*。
标准库
Python本身带着一些标准的模块库,比如json模块。Python3中可以使用json模块来对JSON数据进行编解码,它包含了两个函数:json.dumps():对数据进行编码;json.loads():对数据进行解码。JSON类型与Python类型对应关系:
importjson
#Python字典类型转换为JSON对象
#将JSON对象转换为Python字典
第三方模块
在Python中,安装第三方模块,是通过包管理工具pip完成的。1、安装pip
sudoeasy_installpip
2、比如安装PyMySQL模块来连接数据库,Python3.x:
pip3installPyMySQL
返回:
CollectingPyMySQL
UsingcachedPyMySQL-0.7.11-py2.py3-none-any.whl
Installingcollectedpackages:PyMySQL
SuccessfullyinstalledPyMySQL-0.7.11
升级pip到最新版本
python-mpipinstall--upgradepip
错误和异常
Java中捕获异常是用的trycatchfinally,Python是用的try...except...finally...:
try:
print(int(name))
exceptValueErrorase:#所有的错误类型都继承自BaseException
print(e)
finally:
print('finally')
文件
Python内置了读写文件的函数,一般分为3步:
1、open()函数,打开一个文件对象;
2、调用read()方法读取文件内容;
3、调用close()方法关闭文件。
写文件
桌面新建一个空白Python3Learn.txt文件:
defwrite_file():
try:
f=open('/Users/wuxiaolong/Desktop/Python3Learn.txt','w')#标示符'w'表示写
f.write('Hello,Python')
exceptBaseExceptionase:
print(e)
finally:
iff:
f.close()
读文件
defread_file():
try:
f=open('/Users/wuxiaolong/Desktop/Python3Learn.txt','r')#标示符'r'表示读
#print(f.read())#read()会一次性读取文件的全部内容
print(f.readlines())#每次读取一行内容,返回list
exceptBaseExceptionase:
print(e)
finally:
iff:
f.close()
读取二进制文件
比如图片、视频等等,桌面随便搞张Python3Learn.png:
defread_byte_file():
try:
f=open('/Users/wuxiaolong/Desktop/Python3Learn.png','rb')#标示符'rb'表示读
print(f.read())#read()会一次性读取文件的全部内容
#print(f.readlines())#每次读取一行内容,返回list
exceptBaseExceptionase:
print(e)
finally:
iff:
f.close()
字符编码
encoding参数:读取非UTF-8编码的文本文件;errors参数:遇到编码错误后如何处理,最简单的方式是直接忽略。
f=open('/Users/wuxiaolong/Desktop/Python3Learn.txt','r',encoding='gbk',errors='ignore')
领取专属 10元无门槛券
私享最新 技术干货