Intelligence without ambition is a bird without wings.

2015-04-07
python-单元测试组织和命名惯例

| 名称 | 作用 |
|————-+———————————————-|
| tests | 目录,位于项目根目录下,用于存放单元测试文件 |
| test_XXX.py | 文件,用于测试某个模块的测试源码 |
| XXXTestCase | 类名,测试用例名 |
| test_XXX | 测试方法名 |

阅读此文

2015-04-03
ctags

要点

  • 可以指定多个文件或目录

    ctags file1 dir1
    

选项

  • –list-languages

    查看支持的语言

  • –list-kinds=python

    查看某种语言选项

  • –list-maps

    查看对应语言的拓展名映射规则

  • -R

    递归处理

  • –format=level

    指定tag的输出格式,默认为2,level=2时,ex_cmd会追加;"(通过注释与老vi保持兼容)

  • −−fields=[+|−]flags

    用来控制extension_fileds中要包含的内容

  • –options

    指定配置文件

  • –exclude

    指定多个时,需要分开指定。--exclude=.git --exclude=node_modules --exclude=test

  • –extra=[+|−]flags

    • q 生成额外的的修饰符tag(class::member),以帮助定位类方法,但是会造成双倍大小!尽量不用。
  • –tag-relative=yes(打开后,输出的tag.filename字段不带相对路径)

  • -L file

    从指定文件中读取要生成tags的文件列表

tag记录格式()

tag_name<TAB>file_name<TAB>ex_cmd;"<TAB>extension_fields

  • tag_name 用来检索的key

  • file_name tag所在的文件名

  • ex_cmd vim用来定位的命令

阅读此文

2015-04-03
python-访问父类方法

1
2
3
class A(object):
def __init__(self):
pass

使用super

要求父类必须派生自object!

1
2
3
class B(A):
def __init__(self):
super(B, self).__init__()

使用类名访问

1
2
3
class B(A):
def __init__(self):
A.__init__(self)

参考

  1. http://stackoverflow.com/questions/753640/inheritance-and-overriding-init-in-python
阅读此文

2015-04-03
交换机端口模式

access

  • 判断是否有VLAN信息

    • 如果没有则打上端口的PVID,并进行交换转发,

    • 如果有则直接丢弃(缺省)

  • 将报文的VLAN信息剥离,直接发送出去

Trunk

  • 收到一个报文,判断是否有VLAN信息

    • 如果没有则打上端口的PVID,并进行交换转发,

    • 如果有判断该trunk端口是否允许该 VLAN的数据进入

      • 如果可以则转发

      • 否则丢弃

  • 比较端口的PVID和将要发送报文的VLAN信息

    • 如果两者相等则剥离VLAN信息,再发送

    • 如果不相等则直接发送

Hybrid

  • 收到一个报文判断是否有VLAN信息

    • 如果没有则打上端口的PVID,并进行交换转发,

    • 如果有则判断该hybrid端口是否允许该VLAN的数据进入

      • 如果可以则转发

      • 否则丢弃

  • 判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag, 哪些VLAN是tag)

    • 如果是untag则剥离VLAN信息,再发送

    • 如果是tag则直接发送

阅读此文

2015-04-03
python-获取父类名称

通过__bases__属性

str.__bases__

通过inspect模块

inspect.getmro(str)

注:

  • mro:method resolution order

参考

  1. http://stackoverflow.com/questions/2611892/get-python-class-parents
阅读此文

2015-04-02
python-简单http服务

步骤

  • 进入web根目录

  • 运行

    python -m SimpleHTTPServer
    
  • 访问

    http://localhost:8000
    

参考

  1. http://coolshell.cn/articles/1480.html
阅读此文

2015-04-02
python-运行模块

使用python选项方式

python -m SimpleHTTPServer

优点

  • python会按照模块搜索路径列表去搜索执行

直接运行

  • 需要指定模块路径名

    “C:\Python27-32\Lib\SimpleHTTPServer.py”

阅读此文

2015-04-02
python-pydoc

优点

  • 不但可以查看系统本身的文档,还可以查看拓展包,当前目录下的源码文档

使用方式

交互式命令行

在进入命令行之前,自动导入help()

1
from pydoc import help

使用http服务器方式

默认包含当前路径源码文档

pydoc.py -p 8000
阅读此文

2015-04-02
python-为什么是len()而不是方法或属性

阅读此文

2015-04-02
python-类

特点

  • python中的类是C++和Modula-3的混合体

  • C++角度,所有成员使用public,所有方法都是virtual

  • 和Modula-3一样,python没有隐式关联对象与数据和方法

    所有方法在定义时,显示声明第一个参数self

    在调用时,self隐式赋值

  • 同stmalltalk一样,类本身也是对象,此机制提高了导入和重命名语义

  • 同C++和Modula-3不一样的是,内置类型可以被拓展

  • 允许多重继承

  • 子类可以重写父类的任何方法

  • 子类可以调用父类中的同名方法

  • 子类__init__如果需要,必须显式调用父类__init__方法

  • 类可以被动态创建,且可以在创建之后被修改

阅读此文