1.在python中如何调用PCSC中的接口
你找个工具将这个接口API,自动转换成python版本的就可以了。好象是SWIG和Boost。 这两个以前看过,偶尔还试过几次。之所以建议你用自动工具,就是因为python对于C++扩展麻烦些,对于C语言接口可以使用ctypes和cython简单解决。不过C++如果用这些方法有时候被很麻烦。
boost在linux里会经常用到,在windows下也可以使用。SWIG在一般的教程里都会提及到。SIP也是最近出名的。
下面是一些参考资料,搜索来的。
=== 使用工具进行扩展 ===
虽然扩展过程并不复杂,但也可以使用许多已知的工具简化扩展过程。
(1) SWIG
由David Beazley创建,是一个自动的扩展构造工具。它读入注释的C/C++头文件,为python、tcl、perl等多种脚本语言产生wrap代码。SWIG可以包装大量C++特性到Python的扩展模块中。
评价:swig简单,可以支持多种脚本文件,但支持的c++特性不完备。
(2) SIP
由Phil Thompson创建,是一个C++模块构造器,专门为C++的类创造wrapper。它曾经被用于创建PyQt和PyKDE扩展模块,因此比较出名。
评价:支持C++特征很齐全,但比较复杂。
(3) bgen
该工具被包含在标准Python发布包中的模块构建工具集里,由Jack Jansen维护。它用于产生在Macintosh版本可用的Python扩展模块。
(4) pyfort
由Paul dubois创建,用来产生Fortran语言生成的扩展模块。
(5) cxx
也由Paul Dubois创建,是一个库,为Python的C++扩展提供了友好的API。Cxx允许将许多python对象(如list和tuple)使用到STL的运算中。库也提供了C++异常处理到python异常处理的转化。
(6) WrapPy
由Greg Couch创建,通过读入C++头文件来产生扩展模块。
(7) Boost Python Library
由David Abrahams创建。该库提供了更多与众不同的C++ wrap到python扩展中,而只需要对要扩展的C++类写很少的附加信息。
评价:Boost为C++提供了许多实用的库,如Regex(正则表达式库)、Graph(图组件和算法)、concept check(检查泛型编程中的concept)、Thread(可移植的C++多线程库)、Python(把C++类和函数映射到Python之中)、Pool(内存池管理)等等。
Boost总体来说是实用价值很高,质量很高的库。并且强调对跨平台的支持。但是Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。
boost.python支持的c++特性较多,但是比较复杂。
2.如何使用Z3的Python接口
Z3支持许多平台以及多种语言接口,这里我们简单介绍其Python接口的使用。
以Mac OS X为例,下载Z3可执行文件后,要设置环境变量PATH和PYTHONPATH:export PATH=$PATH:
3.Python中怎么写接口啊,我在网上一直找不到
什么是接口 ?
接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部功能。
个人的理解,多用于协作开发时,有不同的人在不同的类中实现接口中的各个方法。
在python中接口由抽象类和抽象方法去实现,接口是不能被实例化的,只能被别的类继承去实现相应的功能。
个人觉得接口在python中并没有那么重要,因为如果要继承接口,需要把其中的每个方法全部实现,否则会报编译错误,还不如直接定义一个class,其中的方法实现全部为pass,让子类重写这些函数。
当然如果有强制要求,必须所有的实现类都必须按照接口中的定义写的话,就必须要用接口。
方法一:用抽象类和抽象函数实现方法
[python] view plain copy
#抽象类加抽象方法就等于面向对象编程中的接口
from abc import ABCMeta,abstractmethod
class interface(object):
__metaclass__ = ABCMeta #指定这是一个抽象类
@abstractmethod #抽象方法
def Lee(self):
pass
def Marlon(self):
pass
class RelalizeInterfaceLee(interface):#必须实现interface中的所有函数,否则会编译错误
def __init__(self):
print '这是接口interface的实现'
def Lee(self):
print '实现Lee功能'
def Marlon(self):
pass
class (interface): #必须实现interface中的所有函数,否则会编译错误
def __init__(self):
print '这是接口interface的实现'
def Lee(self):
pass
def Marlon(self):
print "实现Marlon功能"
方法二:用普通类定义接口,[python] view plain copy
class interface(object): #假设这就是一个接口,接口名可以随意定义,所有的子类不需要实现在这个类中的函数
def Lee(self):,
pass
def Marlon(self):
pass
class Realaize_interface(interface):
def __init__(self):
pass
def Lee(self):
print "实现接口中的Lee函数"
class Realaize_interface2(interface):
def __init__(self):
pass
def Marlon(self):
print "实现接口中的Marlon函数"
obj=Realaize_interface()
obj.Lee()
obj=Realaize_interface2()
obj.Marlon()
4.如何使用Z3的Python接口
Z3支持许多平台以及多种语言接口,这里我们简单介绍其Python接口的使用。
以Mac OS X为例,下载Z3可执行文件后,要设置环境变量PATH和PYTHONPATH:
export PATH=$PATH:
export PYTHONPATH=$PYTHONPATH:
然后我们编辑一个简单的例子 stock.py:
#!/usr/bin/env python
from z3 import *
def main (argv):
ds = Real('ds')
fs = Real('fs')
ps = Real('ps')
origin = And ( Not (And (0Implies (And (0Implies (And (0Implies (And (0solver2 = Solver()
solver2.add (origin)
solver2.push()
solver2.add (ds == dv/1000)
solver2.add (fs == fv/1000)
solver2.add (ps == pv/1000)
if solver2.check() == sat:
sat_count2 = sat_count2 + 1
solver2.pop()
从31到33行,声明3个实数变量,在35行我们定义一个逻辑公式并在47行加入当前环境中,77行调用check()方法并检查其返回值:sat -- 公式有解;unsat -- 公式无法满足。注意72,79行的push()和pop()方法是用来暂存和恢复环境。
5.能介绍下Python3.x的接口怎么设计的吗
pytho没有接口。。。也没有抽象类和虚方法。。。。。虚方法,抽象类,接口,这是强类型静态语言实现多态的三种实现方式。。。PYTHON是动态语言,自然也就没有这些。。
常见的静态语言,通常包括三种,分别是JAVA,C#,C++。。这些语言里才有虚方法,抽象类,和接口。。。动态语言是没有这些的。。即便有些教程里面会把“封装,继承,多态”挂在嘴边。。但其实都只是在硬生生的套静态语言里的概念。。其实根本不是一回事。
要完全弄懂个问题,你就得明白什么是多态。。。因为虚方法,抽象类,接口,都是为了实现多态。。。学术一点的解释,就是“让同样类型的对象,实现不同的表现”。。我知道看了这句话,你也完全不明白到底啥意思。。。因为动态语言里数据类型的概念是被弱化了的。。。光解释多态,就可以写成一本书。。而市面上也确实有不少这种书。
如果你真想搞清楚,就去学JAVA或者C#。。。如果你只是为了学习PYTHON,你也完全不需要明白多态是什么。。。接口,抽象类也跟你没任何关系。。。光理解多态,本身的难度和所需的时间,就已经比学会整个PYTHON语言还要困难一个级别。。。你又怎么可能看懂例子?
6.用python怎么写一个接口自动化框架
#!/usr/bin/env pythonimport sysstr = Truewhile (str):dig = int(input())if dig > 100:print 'please input mun between 0~100'elif dig >= 90:print 'A'elif dig >= 80:print 'B'elif dig >= 70:print 'C'elif dig >= 60:print 'D'elif dig <60:print 'E'。