Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库
装饰器其实也是一个函数,它的参数是一个函数 ; 其它函数与装饰器之间建立联系是通过 @装饰器函数名, 感觉有点像Spring的面向切面编程
装饰器函数,如何处理原函数的参数.?
装饰器 原函数返回值的处理
类与对象 , self相当于其它语言中的 this
类的静态属性和动态属性
静态方法和动态方法
静态方法的参数中是没有 self的.
特性
私有方法和私有属性 : __开头
类提供访问私有属性的方式 只读@property 可写 @方法名.setter
类的 构造方法__init__() 、 析构方法 __del__()
继承
继承时调用父类的方法(包括构造)都可以使用 Father.methodname(self)
推荐基类都继承自object,继承于object的类称为新式类,不继承object的叫经典类
新式类兼容经典类,同时增加了一些属性和方法,经典类在多继承时有一个问题
经典类的继承是深度优先(D-- B--A--C--A),新式类的继承是广度优先(D--B--C--A)
https://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html class A: ^ ^ def save(self): ... / \ / \ / \ / \ class B class C: ^ ^ def save(self): ... \ / \ / \ / \ / class D
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,不必显式的继承object
Python里面的接口 = 抽象类 + 抽象方法, 见如下例子代码
异常
捕获异常 try :
except XXXError,e:
多个错误时 (except XXXError,YYYError) ,e
// e为具体的异常信息
except Exception , e: //可以捕获所有的异常
else:
print '没有任何错误'
finally:
print '无论是否有异常都会执行'
自定义异常与手动抛出一个异常
连接数据库
Python操作Oracle数据库 参考: http://blog.csdn.net/kongxx/article/details/7107661
连接Oracle数据库的几种方式 : http://www.cnblogs.com/ylqmf/archive/2012/04/16/2451841.html
查询
参数占位符 , dml语句需要手动 commit()
名称占位符:
一次插入多条数据:
conn.cursor()查询时的显示内容
-----------------mysql have-----------Oracle haven't--------------------
#查询时, 每套数据是以字典的形式显示
#mysql 的写法
#conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
# 游标的挪动 到指定位置 模式有 relative absolute
#cursor.scroll(value=0,mode='absolute')
#插入数据之后,获取那条数据的自增主键值 cursor.lastrowid
Oracle好像没看到...
-----------------mysql have-----------Oracle haven't--------------------
cx_Oracle 的官方文档地址 : http://cx-oracle.readthedocs.io/en/latest/index.html
一篇对Oracle操作比较好的文章 : http://blog.sina.com.cn/s/blog_955ad7dc0102vep0.html
#fetchall() 获取所有查询到的数据
#fetchone() 第一次拿一条,第二次调用拿第二条,依次类推
#fetchmany(n) 从当前游标开始拿N条数据
预编译sql,然后再执行
Python操作Mysql数据库
mysql连接时使用如下形式:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)
conn=MySQLdb.connect('ip','user','password','db')
具体参考文档 : http://pan.baidu.com/s/1jI0hm4Y
Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库的更多相关文章
- Python入门篇-装饰器
Python入门篇-装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.装饰器概述 装饰器(无参) 它是一个函数 函数作为它的形参 返回值也是一个函数 可以使用@functi ...
- 面向切面编程AOP——加锁、cache、logging、trace、同步等这些较通用的操作,如果都写一个类,则每个用到这些功能的类使用多继承非常难看,AOP就是解决这个问题的,python AOP就是装饰器
面向切面编程(AOP)是一种编程思想,与OOP并不矛盾,只是它们的关注点相同.面向对象的目的在于抽象和管理,而面向切面的目的在于解耦和复用. 举两个大家都接触过的AOP的例子: 1)java中myba ...
- python笔记 - day4-之装饰器
python笔记 - day4-之装饰器 需求: 给f1~f100增加个log: def outer(): #定义增加的log print("log") ...
- Python深入05 装饰器
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法 ...
- python闭包和装饰器
本文目录: 1. 闭包的解析和用法 2. 函数式装饰器 3. 类装饰器 一.闭包 闭包是一种函数,从形式上来说是函数内部定义(嵌套)函数,实现函数的扩展.在开发过程中,考虑到兼容性和耦合度问题,如果想 ...
- Python进阶之装饰器
函数也是对象 要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用.既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一 ...
- python高级之装饰器
python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函数的定义: 满足下面两个条件之 ...
- [python基础]关于装饰器
在面试的时候,被问到装饰器,在用的最多的时候就@classmethod ,@staticmethod,开口胡乱回答想这和C#的static public 关键字是不是一样的,等面试回来一看,哇,原来是 ...
- Day04 - Python 迭代器、装饰器、软件开发规范
1. 列表生成式 实现对列表中每个数值都加一 第一种,使用for循环,取列表中的值,值加一后,添加到一空列表中,并将新列表赋值给原列表 >>> a = [0, 1, 2, 3, 4, ...
- Noah的学习笔记之Python篇:装饰器
Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) ...
随机推荐
- 如何正确地修改.data和.item文件的‘utf-8’格式
问题:有时候,我们在做分类信息提取的时候文件的格式可能不是我们想要的.txt文件的格式,如何进行修改? 解决:(1)将文件复制一份,并保存为.txt的格式(2)将复制之后的文件通过另存为的方式更改为u ...
- js prototype属性,类似.net扩展方法
prototype 属性使您有能力向对象添加属性和方法. 类似.net扩展方法 定义: String.prototype.toWeekName = function () { var newDate ...
- 如何生成转储(dmp)文件--工具篇
转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种生成转储文件的方法. 1. 任务管理器 任务 ...
- 33、线程与全局解释器锁(GIL)
之前我们学了很多进程间的通信,多进程并发等等,今天我们来学习线程,线程和进程是什么关系,进程和线程有什么相同而又有什么不同今天就来揭晓这个答案. 一.线程概论 1.何为线程 每个进程有一个地址空间,而 ...
- 双T型陷波滤波器
有时,我们需要设计个滤波器滤除特定一个频率的噪音.这时就需要陷波滤波器了. 陷波器是带阻滤波器的一种,带阻滤波器的滤除频率有一定宽度,而陷波就是对某一个频率噪音的滤除. 双T型陷波滤波器应该是最常见的 ...
- java se之File类
遍历某个目录路径下的所有文件并打印输出: package com.led.file; import java.io.File; public class File_List { public stat ...
- github如何搜索资料
进入自己的主页,然后点击explore→trending; 或者google搜索,如github java 后端 请参考:http://mp.weixin.qq.com/s?__biz=MzA4NTQ ...
- 201671010121 2016-2017-2《java程序设计》第一周学习总结
之前学了些C语言,学的也不是太懂,还算能读懂一些简答的代码吧,我觉得这就是进步.刚步入大二,在计算机这个专业里不刻苦是不行的.但是,到我拿到Java书的时候,真心是吓住我了,好厚的一本书啊,不过在老师 ...
- 关于package.json的理解
在我们打包项目的时候或者使用node的时候,常常会看到package.json这个文件,里面乱七八糟的一大堆json,开始的时候没注意,以为是使用node或者npm的时候自动创建的,后来自己写demo ...
- C++ Concept 和Java 接口
C++ Concept 和Java 接口 Concept及接口 我会用Java写个case来解释什么是C++的Concept.Concept可以理解为接口,它是一种广义的接口.不同于Java的Inte ...