cla函数python CLA百度百科

python 方法和函数的区别

在Python中,对这两个东西有明确的规定:

创新互联专注于企业营销型网站建设、网站重做改版、沿滩网站定制设计、自适应品牌网站建设、H5网站设计成都做商城网站、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为沿滩等各大城市提供网站开发制作服务。

函数function —— A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.

方法method —— A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).

从定义的角度上看,我们知道函数(function)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。所以普通的在module中定义的称谓函数是很有道理的。

那么方法的意思就很明确了,它是与某个对象相互关联的,也就是说它的实现与某个对象有关联关系。这就是方法。虽然它的定义方式和函数是一样的。也就是说,在Class定义的函数就是方法。

从上面的角度看似乎很有道理。

def fun():

pass

type(fun)

class 'function' #没有问题

class Cla():

def fun():

pass

@classmethod

def fun1(cls):

pass

@staticmethod

def fun2():

pass

i=Cla()

Cla.fun.__class__

class 'function' #为什么还是函数

i.fun.__class__ #这个还像话

class 'method'

type(Cla.fun1)

class 'method' #这里又是方法

type(i.fun1)

class 'method'#这里仍然是方法

type(Cla.fun2)

class 'function' #这里却是函数

type(i.fun2)

class 'function'#这里却是函数

事实上,上面的结果是可以解释的:

1,普通方法(老版中直接就是"instancemethod")在module中与在Class中定义的普通函数,从其本身而言是没有什么区别的,他们都是对象函数属性。 之所以会被说在Class中的定义的函数被称为方法,是因为它本来就是面向将来的实例对象的,其实他们就是实例方法,这些方法是与实例相联系的(从实例出发访问该函数会自动赋值)。所以你从Class访问仍然是一个函数

2,类方法("classmethod"),因为类同样是对象,所以如果函数与类进行联系了话(与实例方法一样的模式)那么就能够这么说了!

3,静态方法,虽然定义在内部,并且也较方法,但是却不与任何对象联系,与从类访问方法是一样的,他们仍然是函数。

这样看来上面的定义可以改改了:

函数的定义自然不变。

方法的定义可以是这样的,与某个对象进行绑定使用的函数。注意哦。绑定不是指" . "这个符号,这个符号说实在的只有域名的作用。绑定在这里是指,会默认赋值该绑定的对象。

python 读帧和绘图的区别

capture = cv2.VideoCapture(0)

while True:

#img = cv.QueryFrame(capture)

ret, frame = capture.read()

两种方法的区别在于得到的类型不同,img和frame的类型分别是lplimage和array。

在绘图中,matplotlib和opencv也有不同。

复制代码

plt.cla()

plt.gca().add_patch(plt.Rectangle((bbox[0], bbox[1]),

bbox[2] - bbox[0],

bbox[3] - bbox[1], fill=False,

edgecolor='g', linewidth=3))

plt.show()

im=im.copy()

size = im.shape[:2]

h,w=size

cv2.rectangle(im,(int(bbox[0]), int(bbox[3])),(int(bbox[2]), int(bbox[1])),(0,255,0),5);

cv2.imshow("im",im);

cv2.waitKey (0)

复制代码

plt.show必须手动关闭。如果是操作视频或者图像,还是推荐使用opencv。并且二者的参数不同。这个需要注意。

Matplotlib教程,Pyplot教程

pyplot是一个函数集合,能够让matplotlib像matlib一样工作,每一个函数都会对一个figure做出一些改变,例如,创建一个figure,在一个figure里创建一个plotting area,在plotting area里画一些线,在plot里加一些标签等

在pyplot函数调用之间会保留着各种状态,比如当前figure和plotting area和当前的axes(这里的axes是指figure中axes部分,不是指数学上的axis的复数)

pyplot API没有面像对象API灵活,这里能看到的大部函数都是从一个Axes对象的方法,建议看文档中的例子了解它是怎么工作的

用pyplot快速创建一张图

为什么x轴是0-3,y轴是1-4,如果你给plot传入一个数组,plot会假设是一个y值的序列,然后自动创建相应的x值,因为python从0开始,默认的x向量与y同样长度,则x为[0,1,2,3]

plot是一个万能命令,它可以任意数里的参数,例如,画一个x-y二维图像,可以这样用命令

对于每个成对的x,y,还有一个可选的第三个参数,用来指定画线的颜色和类型,格式化的字母符号借鉴于matlab,你能把颜色符号与线类型连在一起,默认的格式化符号是'b-',就是蓝色的实线,如果你想画一个红色图点,可以

plot文档里有所有的格式化参数,例子中axis()使用一个list [xmin,xmax,ymin,ymax]来指定可见范围

如果matplotlib只能用lists,那对于数字处理就没什么用了.一般来讲,你可以用numpy.array,实际上,所有序列都被内部转换成numpy.array,下面的例子用不同的形式画了一些线

有一些实例,是通过字符串访问变量里的数据,例numpy.recarray,pandas.DataFrame

matplotlib可以让你提供一些带有关键字字典的对象,如果是这样的对象,plot可以把字符串和变量关联起来

也可以使用分类变量做图,matlibplot有很多函数可以传入分类变量

线有很多属性,如线宽,样式,反锯齿,有很多方式设置线的属性

获取可设置属性的列表,调用setp函数

Matlab和pyplot,有一个当前figure和当前axes的概念,所有的plot命令都会作用在当前axes上,函数gca()返回当前axes,gcf()返回当前figure

通常,你不用担心这个,因为都在内部处理了这些问题,下面是一个创建两个subplot的脚本

这里的的figure()是可选的,因为默认情况自动创建了figure(1),还有如果你不指定任何subplot,会默认创建subplot(111),subplot指定行数,列数,plot序号,plot序号的范围是1到行数乘以列数.如果行列数相乘小于10,参数里的逗号是可选的,因为subplot(211)默认是指subplot(2,1,1)

你可以创建任何数量的subplot和axes,如果你想用axes()命令手动指定axes位置(例如不是一个矩形),你可以用axes([left,bottom,width,height]),这里所有数都是小数(0 to1)

可以多次用一个增长的数当参数调用figure()创建多个figures,当然,每个figure都包括多个subplot和axes

clf()可以清除当前figure,cla()可以清除当前axes,如果你觉得内部状态不好用,你可以用弱状态的面向对象API来代替它

如果你创建了多个figure,你需要注意一件事,figure是在调用close()的时候内存才被释放,删除所有figure,或用窗口管理器关闭窗口是不行的,因为pyplot在close()调用之前会有很多内部引用

text()命令可以在任何位置填加文本,xlabel,ylabel和title可以在指定的地方填加文本

所有的text()命令都会返回matplotlib.text.Text实例,和线段一样,你可以在函数里或者setp里用关键字参数自定义属性

matplotlib里文本里可以用Tex方程表达式,例如,你想写sigma=15,你可以用Tex表达式,然后用$括起来

前面的r很重要,它意味着\是字符串,不要当成python转义符,matplotlib有一个内置的Tex解析器和布局引擎,和自己的数字字体,也就是说可以在跨平台的时候不用安装Tex,如果安装了LaTex和dvipng,也可以用来做输出

text()可以用在axes的任何位置,一个用法就是用来注释,annotate()可以很容易的提供帮助功能,有两个坐标点要考虑,xy和xytext,都是元组形式

matplotlib不仅提供线性坐标轴刻度,而且还提供对数和分对数刻度,这种刻度对跨度很大的数据很有用,改变刻度比例很简单:

y轴不同刻度的例子

你也可以填加自己的刻度比例


分享标题:cla函数python CLA百度百科
链接分享:http://myzitong.com/article/hjejgo.html