- 博客(74)
- 收藏
- 关注
转载 Python进阶-----异常处理
一、什么是异常 异常就是程序运行时发生错误的信号,在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止,在python中,错误有如下两种:1、语法错误 即代码语句不符合python语法规范,比如if语句缺少冒号,print语句缺少句号等。这种语法错误会被python解释器语法检测出来,导致程序无法正常运行,所以必须在程序执行前就改正该...
2018-11-12 20:22:00
160
转载 Python进阶-----元类及自定制元类
一、什么是元类 元类:就是生成类的的类,或者说是类的模版。 1 #定义一个类来看一下 2 class Meanwey: 3 pass 4 m = Meanwey() 5 6 #通过type来查看对象的类 7 print(type(m)) #<class '__main__.Meanwey'> ...
2018-11-04 21:23:00
166
转载 Python进阶-----property用法(实现了get,set,delete三种方法)
一、可以利用property对静态属性的进行修改操作,包括设置和删除属性 1、调用静态属性===>在静态属性函数前先用@property; 2、设置静态属性===>在静态属性函数前加上@静态属性函数名.setter,同时静态属性函数要加上value参数; 3、删除静态属性===>在静态属性函数前加上@静态属性函数名.deleter。...
2018-11-03 23:41:00
350
转载 Python进阶-----自定制property
一、回顾python内置的装饰器@property @property的作用就是将类的函数属性同对象的数据属性一样可供对象直接调用(静态属性),而不需要加() 1 class Room: 2 def __init__(self,name,width,length): 3 self.name = name 4 self....
2018-11-03 23:39:00
166
转载 Python进阶-----类的装饰器及应用
回顾什么是装饰器: 装饰器定义:本质就是函数(高阶函数),功能是为其他函数(对象)添加新功能一、类的装饰器基本实现原理如下:1 def deco(cls):2 print('类的装饰器=========》')3 print('='*20)4 return cls5 6 @deco #====> Foo = dec...
2018-11-03 20:33:00
100
转载 Python进阶-----上下文管理协议(__enter__,__exit)
一、上下文管理协议 即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法 1、__enter__()会在with语句出现(实例化对象)时执行 2、__exit__()会在with语句的代码块实行完毕才会执行 1 class Open: 2 def __init__(self,name): 3 ...
2018-11-02 21:51:00
143
转载 Python进阶-----描述符(__get__(),__set__(),__delete__())
一、描述符是什么 描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议 __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发1 class Foo: #在python3中Foo是新式类,...
2018-11-02 20:13:00
497
转载 Python进阶-----类中的迭代器协议
回顾什么是迭代器协议: 迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退)类中的可迭代对象必须提供__iter__()和__next__()方法 1 class Foo: 2 def __init__(self,n): 3 self.n ...
2018-11-01 14:58:00
103
转载 Python进阶-----__call__方法
__call__方法对象后面加括号,触发执行。注:构造方法(__init__)的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执行是由对象后加括号触发,即:对象()或者类名()()1 class Foo:2 def __call__(self,*args,**kwargs):3 print('实例执行了')...
2018-11-01 10:44:00
101
转载 Python进阶-----__del__析构方法
析构方法:当对象在内存中释放时,自动触发执行此方法一般无需定义,是由解释器在进行垃圾回收时自动触发执行 1 class Foo: 2 def __init__(self,name): 3 self.name = name 4 5 def __del__(self): 6 print('我执行了') 7 ...
2018-10-30 20:37:00
84
转载 Python进阶-----__slots__属性
__slots__属性用于取代__dict__属性,一般适用于属性较少,实例较多的情况以节省内存,同时也限制了实例或者类的数据属性1 class Foo:2 __slots__ = ['name','age'] #相当于{'name':None,'age':None} 具体值可以通过用户实例指定3 4 f1 = Foo()5 print(f1.__s...
2018-10-30 20:04:00
85
转载 Python进阶-----通过类的内置方法__format__自定制格式化字符串
__format__方法可以自定格式化字符串,不定义的话会执行默认格式format(obj) 等同于--> obj.__format__format_dic = { 'y-m-d':'{obj.year}-{obj.mon}-{obj.day}', 'd/m/y':'{obj.day}/{obj.mon}/{obj.year}'}class D...
2018-10-14 23:49:00
182
转载 Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息...
__str__方法其实是在print()对象时调用,所以可以自己定义str字符串显示信息,在该方法return一个字符串,如果不是字符串则报错print(obj) 等同于-->str(obj) 等同于-->obj.__str__#未自定__str__信息class Foo: def __init__(self,name,age): ...
2018-10-14 23:47:00
236
转载 Python进阶-----类的内置item属性方法
类的内置item相关方法只有在通过字典key操作才会触发而通过点的方式来操作,则触发attr相关方法class Foo: def __init__(self,name,age): self.name = name self.age = age def __getitem__(self, item): p...
2018-10-14 23:44:00
430
转载 Python进阶-----类的内置方法__getattribute__
__getattribute__ 方法功能:1 调用属性会触发该功能,属性存在则会返回相应的值;2 如果属性不存在则会抛出异常AttributeError,所以可以自定义异常信息3 存在__getattr__,若有异常出现则会传递给__getattr__用来接收,执行操作class Foo: def __init__(self,x): self.x...
2018-10-14 23:43:00
150
转载 Python进阶-----使用isinstance和issublcass方法判断类和对象的关系
#!/usr/bin/env python# -*- coding:utf-8 -*-# isinstance(obj,cls) #用于判断obj对象是否由cls这个类实例化出来的 #若实例化对象的类继承了父类,判断对象isintance父类也返回Trueclass Foo: def __init...
2018-10-14 23:41:00
104
转载 Python进阶-----类组合的方式完成授权
授权:授权是包装的一个特性, 包装一个类型通常是对已存在的类型的一些定制,这种做法可以新建,修改或删除原有产品的功能。其它的则保持原样。授权的过程,即是所有更新的功能都是由新类的某部分来处理,但已存在的功能就授权给对象的默认属性。import timeclass FileHandle: def __init__(self,filename,mode = 'r',en...
2018-10-14 23:39:00
137
转载 Python进阶-----类继承的方式完成包装
包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均可以通过下面的方式进行二次加工)class List(list): #继承list所有的属性,也可以派生出自己新的,比如append和mid def append(self...
2018-10-14 23:38:00
134
转载 Python进阶-----类的内置attr属性方法
针对类实例化的对象,才能触发内置属性:__getattr__ __delattr__ __setattr__class Foo: x = 1 def __init__(self,y): self.y = y def __getattr__(self, item): #self为实例对象,item为调用的属性 ...
2018-10-14 23:35:00
138
转载 Python进阶-----类之反射
反射:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省) 下列方法适用于类和对象,可以实现自省的函数: 1 hasattr(obj,name) #name为属性字符串,用于查找实例化对象obj中是否有name这个属性,返回bool 2 getattr(obj,name,default = None) #name为函数属性字符串(...
2018-10-14 23:34:00
107
转载 Python进阶-----类之封装
封装第一个层面的封装:类就是麻袋,这本身就是一种封装第二个层面的封装:类中定义私有的,只有在类的内部使用,外部无法访问第三个层面的封装:明确区分内外,内部的实现逻辑,外部无法知晓,并且为封装到内部的逻辑提供了一个访问接口给外部使用封装的本质是为了明确的区分内外部。python约定: 约定一:任何以单下划线开头的名字都应该是内部的,私有的 约定二:双下划线开头的名字其实这仅仅这...
2018-10-14 23:30:00
109
转载 Python进阶-----类之 多态
多态:指一类事物有多种形态,对象通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类。 多态表明了动态(运行时)绑定的存在,不同的对象调用相同的方法。多态是继承的实现细节。import abcclass Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def ta...
2018-10-14 23:27:00
79
转载 Python进阶-----在子类中调用父类方法
方法一:指名道姓,即父类名.父类方法()codingclass Vehicle: #定义交通工具类 Country='China' def __init__(self,name,speed,load,power): self.name=name self.speed=speed self.load...
2018-10-14 23:23:00
130
转载 Python进阶-----类的继承顺序
python的类可以继承多个类,如果继承多个类,那么其寻找方法的方式有:深度优先和广度优先 基类或者父类继承了object类,那么该类就是新式类,否则便是经典类 当类是经典类时,多继承情况下,会按照深度优先方法查找 当类时新式类时,多继承情况下,会按照广度优先方法查找 1 class A(object): 2 def test(self): 3 ...
2018-10-14 23:21:00
160
转载 Python进阶-----类的继承、接口继承及归一化设计
一、什么是继承 类的继承:继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。子类会“遗传”父类的属性,从而解决代码重用问题 python中类的继承分为:单继承和多继承 1 class Father: 2 money = 10000 3 def __init__(...
2018-10-14 23:18:00
194
转载 Python进阶-----类的组合
定义一个人的类,人有头、躯干、手、脚等数据属性,这几个属性又可以是通过一个类实例化的对象,这就是组合 1 class Hand: 2 pass 3 class Foot: 4 pass 5 class Trunk: 6 pass 7 class Head: 8 pass 9 10 class Person:...
2018-10-14 23:14:00
81
转载 Python进阶-----静态方法(@staticmethod)
@staticmethod 静态方法只是名义上归属类管理,但是不能使用类变量和实例变量,是类的工具包放在函数前(该函数不传入self或者cls),所以不能访问类属性和实例属性 1 class cal: 2 cal_name = '计算器' 3 def __init__(self,x,y): 4 self.x = x 5 ...
2018-10-14 23:12:00
63
转载 Python进阶-----类方法(@classmethod)
如果不想通过实例来调用类的函数属性,而直接用类调用函数方法,则这就是类方法,通过内置装饰器@calssmethod 类名.类方法() 类方法只是给类使用(无论是否存在实例),只能访问实例属性(变量) 1 class cal: 2 cal_name = '计算器' 3 def __init__(self,x,y): 4 self.x ...
2018-10-14 23:10:00
157
转载 Python进阶-----类的静态属性(@property)
静态属性 == 数据属性若想方便使用想将类的函数属性同对象的数据属性一样可供对象直接调用,可以在类中的函数前加上装饰器@property,这样就将函数属性转换为类似数据属性一样可供直接调用(封装)但是不可被修该(不同于数据属性),静态属性可以访问类的数据属性和实例的数据属性 1 class cal: 2 cal_name = '计算器' 3 def __i...
2018-10-14 23:07:00
166
转载 Python进阶-----类、对象的属性的增删改查
一、类的属性 类属性又称为静态属性。这些数据是与他们所属的类对象绑定的,不依赖于任何类实例。 类有两种属性:数据属性和函数属性 1. 类的数据属性是所有对象共享的 2. 类的函数属性是绑定给对象用的 1 class Chinese: 2 country = 'China' 3 def __init__(self,name): 4 ...
2018-10-14 23:04:00
108
转载 Python进阶-----类、对象的相关知识
一、声明类 class 类名: #一般类名的首字母大写 '类的文档字符串' 类体 例如创建一个中国人的类:1 class Chinese:2 '这是一个中国人的类' #类的文档字符串3 name = '中国人'4 def eat():5 print('爱吃水果')...
2018-10-14 23:00:00
83
转载 Python进阶-----面向对象和类的基本定义
#!/usr/bin/env python# -*- coding:utf-8 -*-# 1、类:即类别、种类,类是一种数据结构,把一类事物的相同的特征和动作整合到一起就是类。类是一个抽象的概念。# 2、对象:基于类而创建的一个具体的事物(具体存在的),特征与动作的集合体。# 3、对象和类的关系:对象都是由类产生的。# 4、实例化:由类生产对象的过程叫实例化,类实例化的结果就是一个对象,...
2018-10-14 22:52:00
90
转载 Python基础-----hashlib模块
#!/usr/bin/env python# -*- coding:utf-8 -*-import hashlib#用于加密相关的操作,python 3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法####################################################...
2018-10-14 22:50:00
79
转载 Python基础-----configparser模块
#!/usr/bin/env python#-*- coding:utf-8 -*-##################################写入一个配置文件######################################### import configparser## config = configparser.ConfigParser()# config["D...
2018-10-03 23:54:00
78
转载 Python基础-----logging模块
#!/usr/bin/env python#-*- coding:utf-8 -*-########################################################################################################################################################灵...
2018-10-03 23:52:00
105
转载 Python基础-----re模块(模糊匹配)
#!/usr/bin/env python#-*- coding:utf-8 -*-import re'''1 普通字符:大多数字符和字母都会和自身匹配 >>> re.findall('alex','yuanaleSxalexwupeiqi') ['alex'] re.fin...
2018-10-03 23:51:00
821
转载 Python基础-----xml模块
1、xml模块介绍及用法 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。 xml的格式通过<>节点来区别数据结构的import xml.etree.ElementTree as ETtree = ET.parse("xml_temp.xml") #parse()解析 对xml文件进行解析r...
2018-10-03 23:49:00
86
转载 Python基础-----shelve模块
#!/usr/bin/env python#-*- coding:utf-8 -*-'''shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型'''import shelve f = shelve.open(r'shelve.txt') #目的:将一个字典放入文本'''会生成3个文件后缀分...
2018-10-03 23:44:00
97
转载 Python基础-----pickle模块
#!/usr/bin/env python#-*- coding:utf-8 -*-import pickle'''##----------------------------序列化import pickle dic={'name':'alvin','age':23,'sex':'male'} print(type(dic))#<class 'dict'> j=pickle....
2018-10-03 23:43:00
108
转载 Python基础-----json模块
#!/usr/bin/env python#-*- coding:utf-8 -*-import json'''我们把对象(变量)从内存中变成可存储或传输的过程称之为[序列化],在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到...
2018-10-03 23:42:00
74
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人