python的接口

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:export PYTHONPATH=$PYTHONPATH:然后我们编辑一个简单的例子 stock.py:#!/usr/bin/env pythonfrom z3 import *def main (argv):ds = Real('ds')fs = Real('fs')ps = Real('ps')origin = And ( Not (And (0<=ds, 1<=fs, 1<=ps)),Implies (And (0<=ds, 0<=fs, 0<=ps), ds<=3),Implies (And (0<=ds, 0<=fs, 0<=ps, fs<=1), ds+fs<=3),Implies (And (0<=ds, 0<=ps, 1<=fs, ps<=1), ds+ps<=2))solver2 = 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 + 1solver2.pop()从31到33行,声明3个实数变量,在35行我们定义一个逻辑公式并在47行加入当前环境中,77行调用check()方法并检查其返回值:sat -- 公式有解;unsat -- 公式无法满足。注意72,79行的push()和pop()方法是用来暂存和恢复环境。

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'。

python的接口

转载请注明出处代码入门网 » python的接口

资讯

python模拟

阅读(15)

本文主要为您介绍python模拟,内容包括如何使用python进行浏览器行为模拟,如何使用python进行浏览器行为模拟,Python对参数输出进行模拟。你可以使用python的webbrowser库来模拟浏览器:url = # Open URL in a new tab, if a br

资讯

pythonnotutf8

阅读(18)

本文主要为您介绍pythonnotutf8,内容包括,sublime运行问题,在python里如何使用装饰器?#*coding:utf8,python如何代替javascript。October 17th, 2008 Encoding is always a problem。 We use the utf8 enc

资讯

pythonforin

阅读(18)

本文主要为您介绍pythonforin,内容包括请问Python中forin是怎么用的,python中的forin是什么意思,python中的forin?。for..in语句是另一个循环语句,它迭代一个对象的序列,例如经历序列中的第一项。在后面的章节,我们将会看到更多关于序列的细节

资讯

python马哥

阅读(11)

本文主要为您介绍python马哥,内容包括马哥Python课程怎么样?靠谱吗?,马哥python培训怎么样?,马哥教育的Python培训老师是谁?。Python培训学习有很多,但是现在网络比较复杂,每个人的说法也是不同的,所以现在Python培训机构的话,最好还是自己去体

资讯

python模

阅读(15)

本文主要为您介绍python模,内容包括python中求模运算求一个高手给我详细解释一下,我不太明白谢谢,python上交互模式?打印模式和编辑模,pythonx+=1是什么意思?。这个其实就是其它语言中的自增的一种表达方式,在python表示加法赋值运算符,和x =

资讯

python与shell

阅读(14)

本文主要为您介绍python与shell,内容包括python和shell的区别,python和shell有什么区别?,python和shell的区别。shell 应该属于宏语言,顾名思义是系统的壳,方便与系统交互的在以下情况下,不使用shell,因为shell对此无能为力;如:跨平台,

资讯

requestsforpython

阅读(13)

本文主要为您介绍requestsforpython,内容包括如何在python中安装requests,python如何将一系列数字十个一行输出,零基础如何开始学习Python?如何入门?。使用循环输出列表,利用 计数器控制输出数量,当输出到第十个,计数器归零重新开始计数,print

资讯

运行python

阅读(13)

本文主要为您介绍运行python,内容包括如何运行Python程序,运行Python程序的几种方式,怎么用cmd运行python。1. 使用Python自带的IDLE 在开始--&gt;程序-->Python2.5(视你安装的版本而不同)中找到IDLE(Python

资讯

ubuntu的python

阅读(17)

本文主要为您介绍ubuntu的python,内容包括ubuntu下python怎么样,ubuntu如何运行python程序,如何在ubuntu上安装python。1. 运行方式一新建test.py文件:touch test.py然后vim test.py打开并编辑:print Hello Worl

资讯

Pythonjson

阅读(15)

本文主要为您介绍Pythonjson,内容包括python中为什么用json有什么作用,如何用python处理json文件,python怎么处理json。import json,time infos = {"_id":"description","name":"python","filen

资讯

python3.6获取线程id(在多线程情况下,如何获取当前线程id)

阅读(14)

本文主要为您介绍python3.6获取线程id,内容包括在多线程情况下,如何获取当前线程id,我用python获取一个进程句柄时用由Kernel32.dll导?,python怎么爬取天眼查工商基本信息呢?。Linux下获取当前线程ID号函数:pthread_t pthread_self();返回:当

资讯

python和matlab哪个简单(python与matlab哪个简单)

阅读(15)

本文主要为您介绍python和matlab哪个简单,内容包括python和matlab相比有什么优缺点,python与matlab哪个简单,python和matlab有可比性吗。简单对比:python和matlab的共同点都是各种库十分丰富。python是给懒人用的。matlab是给数学好的人用的

资讯

python爬虫登录github(如何入门Python爬虫)

阅读(17)

本文主要为您介绍python爬虫登录github,内容包括如何入门Python爬虫,Python爬链接爬虫怎么写?,零基础如何开始学习Python?如何入门?。可以先从简单的开始,在熟悉了python语法后,学习用 urllib 和 urllib2 爬虫,使用 beautifulsoup 分析结

资讯

python输出一个数组(python怎么输出数组中的元素)

阅读(18)

本文主要为您介绍python输出一个数组,内容包括Python输出了一个数组我想用这些数组生成一个新的文本怎么办搜狗,python怎么输出数组中的元素,python定义一个函数,功能是输出一个数组里某个数字对应的标号。打印列表中出现前十的元素,可以利

资讯

python模拟

阅读(15)

本文主要为您介绍python模拟,内容包括如何使用python进行浏览器行为模拟,如何使用python进行浏览器行为模拟,Python对参数输出进行模拟。你可以使用python的webbrowser库来模拟浏览器:url = # Open URL in a new tab, if a br

资讯

pythonnotutf8

阅读(18)

本文主要为您介绍pythonnotutf8,内容包括,sublime运行问题,在python里如何使用装饰器?#*coding:utf8,python如何代替javascript。October 17th, 2008 Encoding is always a problem。 We use the utf8 enc

资讯

pythonforin

阅读(18)

本文主要为您介绍pythonforin,内容包括请问Python中forin是怎么用的,python中的forin是什么意思,python中的forin?。for..in语句是另一个循环语句,它迭代一个对象的序列,例如经历序列中的第一项。在后面的章节,我们将会看到更多关于序列的细节

资讯

python马哥

阅读(11)

本文主要为您介绍python马哥,内容包括马哥Python课程怎么样?靠谱吗?,马哥python培训怎么样?,马哥教育的Python培训老师是谁?。Python培训学习有很多,但是现在网络比较复杂,每个人的说法也是不同的,所以现在Python培训机构的话,最好还是自己去体

资讯

python模

阅读(15)

本文主要为您介绍python模,内容包括python中求模运算求一个高手给我详细解释一下,我不太明白谢谢,python上交互模式?打印模式和编辑模,pythonx+=1是什么意思?。这个其实就是其它语言中的自增的一种表达方式,在python表示加法赋值运算符,和x =

资讯

python与shell

阅读(14)

本文主要为您介绍python与shell,内容包括python和shell的区别,python和shell有什么区别?,python和shell的区别。shell 应该属于宏语言,顾名思义是系统的壳,方便与系统交互的在以下情况下,不使用shell,因为shell对此无能为力;如:跨平台,

资讯

requestsforpython

阅读(13)

本文主要为您介绍requestsforpython,内容包括如何在python中安装requests,python如何将一系列数字十个一行输出,零基础如何开始学习Python?如何入门?。使用循环输出列表,利用 计数器控制输出数量,当输出到第十个,计数器归零重新开始计数,print

资讯

python与pandas

阅读(12)

本文主要为您介绍python与pandas,内容包括pythonpandas怎么用,pandas跟python什么关系,python+pandas是否能代替excel+vba。安装pandas1. Anaconda安装pandas、Python和SciPy最简单的方式是用Anaconda。Anaconda是关于

资讯

pythondefif

阅读(2)

本文主要为您介绍pythondefif,内容包括pythondef最后if==true为什么说true没定义,求Python二叉树的几个算法求几个二叉树的method!1)给?,请大家看看这个python程序,哪里错了def hanoi(n。二叉树算法,网上是比较多的; 可能按照你的需求不是很

资讯

数据挖掘python等

阅读(2)

本文主要为您介绍数据挖掘python等,内容包括数据挖掘方向,Python中还需要学习哪些内容,学数据挖掘,爬虫,筛选,分析处理等这些怎么学起,python数据挖掘培训去哪好?。老男孩教育Python课程内容:阶段一:Python开发基础 Python开发基础课程内容包

资讯

pythontoexe

阅读(2)

本文主要为您介绍pythontoexe,内容包括如何将python文件生成exe,python程序怎么用py2exe打包(其他软件也可以)pyth,今天学Python,照着书写了个HelloWorld,不知道要怎?。1。下载并安装py2exe(确认你下载的py2exe版本 和你电脑上装的python版