装饰器其实也是一个函数,它的参数是一个函数 ; 其它函数与装饰器之间建立联系是通过 @装饰器函数名, 感觉有点像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_装饰器_面向对象_封装_继承_异常_接口_数据库的更多相关文章

  1. Python入门篇-装饰器

    Python入门篇-装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.装饰器概述 装饰器(无参) 它是一个函数 函数作为它的形参 返回值也是一个函数 可以使用@functi ...

  2. 面向切面编程AOP——加锁、cache、logging、trace、同步等这些较通用的操作,如果都写一个类,则每个用到这些功能的类使用多继承非常难看,AOP就是解决这个问题的,python AOP就是装饰器

    面向切面编程(AOP)是一种编程思想,与OOP并不矛盾,只是它们的关注点相同.面向对象的目的在于抽象和管理,而面向切面的目的在于解耦和复用. 举两个大家都接触过的AOP的例子: 1)java中myba ...

  3. python笔记 - day4-之装饰器

                 python笔记 - day4-之装饰器 需求: 给f1~f100增加个log: def outer(): #定义增加的log print("log") ...

  4. Python深入05 装饰器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法 ...

  5. python闭包和装饰器

    本文目录: 1. 闭包的解析和用法 2. 函数式装饰器 3. 类装饰器 一.闭包 闭包是一种函数,从形式上来说是函数内部定义(嵌套)函数,实现函数的扩展.在开发过程中,考虑到兼容性和耦合度问题,如果想 ...

  6. Python进阶之装饰器

    函数也是对象 要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用.既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一 ...

  7. python高级之装饰器

    python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函数的定义: 满足下面两个条件之 ...

  8. [python基础]关于装饰器

    在面试的时候,被问到装饰器,在用的最多的时候就@classmethod ,@staticmethod,开口胡乱回答想这和C#的static public 关键字是不是一样的,等面试回来一看,哇,原来是 ...

  9. Day04 - Python 迭代器、装饰器、软件开发规范

    1. 列表生成式 实现对列表中每个数值都加一 第一种,使用for循环,取列表中的值,值加一后,添加到一空列表中,并将新列表赋值给原列表 >>> a = [0, 1, 2, 3, 4, ...

  10. Noah的学习笔记之Python篇:装饰器

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

随机推荐

  1. 安卓手机测试常见BUG

    安装 覆盖安装 跨版本安装 卸载后重新装 2.网络 2G网络下访问应用 网络不好的情况下,访问应用,是否会有数据返回 网络不好的情况下,切换到有网时,数据是否正常展示 WIFI断开时,再进入应用,之前 ...

  2. js获取select下拉框选中的的值和判断checkbox是否选中状态

    html: <select id="lib_select"  name="">   <option   value="1" ...

  3. jaspersoft studio 的初级入门(一)

    前言 最近的工作涉及到企业的报表生成功能,于是就想用此篇博客来记录我的学习历程.进入Jasperreport项目的官网发现有一个软件叫Jaspersoft studio的,它的版本也是6.3.1跟Ja ...

  4. 学习笔记GAN001:生成式对抗网络,只需10步,从零开始到调试

    生成式对抗网络(gennerative adversarial network,GAN),目前最火的非监督深度学习.一个生成网络无中生有,一个判别网络推动进化.学技术,不先着急看书看文章.先把Demo ...

  5. 九天学会Java,第二天,算术运算

    算术运算 先回顾上次我们提到的编程特性 变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 第一天我们讲 ...

  6. 最长单词(一星级题目) 本来是很简单的,其实就是加个flag

    随机了一个题目: 给一个词典,找出其中所有最长的单词. 这道题对于初学者还是很有用的,毕竟用的逻辑是比较复杂的 样例 在词典 { "dog", "google" ...

  7. 优雅的H5下拉刷新【minirefresh】

    序 严格的来说,这是我第一个完全投入的开源项目,它的出现是为了统一移动H5中的下拉刷新,想通过一套框架,多主题拓展方式,适应于任意需求下的任意下拉刷新场景. 另外,这个项目作为独立项目存在,希望能有更 ...

  8. Spring中AOP简介与切面编程的使用

    Spring中AOP简介与使用 什么是AOP? Aspect Oriented Programming(AOP),多译作 "面向切面编程",也就是说,对一段程序,从侧面插入,进行操 ...

  9. 使用Jmeter进行http接口测试 ---------成都杀手

    前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对 ...

  10. C#输出杨辉三角形

    话不多说直接上代码: class Program { static void Main(string[] args) { ;//杨辉三角形的长度 Console.Write("输入杨辉三角长 ...