2016 - 2024

感恩一路有你

python装饰器详解看完彻底明白了 python类方法和静态方法有什么用?

浏览量:4271 时间:2023-06-18 18:06:58 作者:采采

python类方法和静态方法有什么用?

Python中至少有三种比较较常见的方法类型,即实例方法,类方法、动态和静态方法。它们是怎么定义的呢?怎么动态链接库的呢?它们又有何区别和作用呢?休提下文。

简单,这三种方法都定义法在类中。下面我先简单说看看怎末定义和动态链接库的。(PS:实例对象的权限最大。)

实例方法

定义:第一个参数必须是实例对象,该参数名就像约定为“self”,实际它来讯息传递实例的属性和方法(也可以传类的属性和方法);

全局函数:只有由实例对象全局函数。

类方法

定义:使用装饰器@classmethod。另一个参数必须是当前类对象,该参数名像是约定为“cls”,按照它来传达类的属性和方法(不能不能传实例的属性和方法);

内部函数:实例对象和类对象都也可以动态创建。

静态方法

定义:在用装饰器@staticmethod。参数随便地,也没“self”和“cls”参数,但方法体中又不能建议使用类或实例的任何属性和方法;

动态链接库:实例对象和类对象都是可以内部函数。

实例方法

简而言之,实例方法那是类的实例能在用的方法。这里不做过多的话解释。

类方法

使用装饰器@classmethod。

原则上,类方法是将类本身才是对象进行操作的方法。题中有个方法,且这个方法在逻辑上区分类本身充当对象来动态创建更合理,那就这个方法就可以定义法为类方法。另外,如果不是必须无法继承,也是可以定义法为类方法。

如下场景:

题中我有一个学生类和一个班级类,想实现的功能为:

先执行班级人数增加的操作、完成班级的总人数;

学生类能继承自班级类,每实例化一个学生,班级人数都能增强;

到最后,我想符号表示一些学生,完成任务班级中的总人数。

认真的思考:这个问题用类方法做比较好比较好,为啥?毕竟我类的对象的是学生,但是如果我从学生这一个实例中完成班级总人数,在逻辑上很显然是不合理的。同样,要是想我得到班级总人数,假如化合一个班级的实例确实是没有必要的。

python中如何快速创建多个对象?

先讲下基本概念,你所说的的未系统初始化的类,我把它叫做类对象,重新初始化的类叫实例对象。

类对象中有个字典,存了class域下的所有函数对象。

其中,把一个函数用@classmethod可以修饰后,这个函数就变的了类方法,在类对象生成气体的时候就类的对象了,并传去了一个参数,像是这个参数参数名为cls。

把一个函数用@staticmethod稍微修饰后,这个函数也是类的静态动态方法,不过应该不会默认传一个cls参数。

假如用不着上述事项装饰器可以修饰,这个函数应该是类的实例方法,会设置传一个参数,这个参数一般说来其它名字为self。

而这个self,不需要__init__函数执行帮一下忙,才会告诉实例方法,这那就是重新初始化。

但是,python是动态语言,上述事项规则基本是靠约定俗称,讲解器中没有很强的约束。

一连要归纳到的化,你这里的不带参数的方法,应该归到staticmethod里面,在不好算可以使用时应该要再加一个修饰符,承诺这是一个staticmethod。

当然了这个方法有什么用呢?但是好像没什么大用,classmethod是可以的,而staticmethod并非要的。

我只是在把class当作用域带的时候或把class当字典用的时候,用过这个方法。

方法 实例 对象 参数

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。