189 8069 5689

python静态函数作用 python中的静态方法

Python中静态方法和类方法的区别是什么'>lt;译文>Python中静态方法和类方法的区别是什么

要在类中使用静态方法,需在类成员函数前面加上@staticmethod标记符,以表示下面的成员函数是静态函数。使用静态方法的好处是,不需要定义实例即可使用这个方法。另外,多个实例共享此静态方法。

成都创新互联服务项目包括乌拉特中网站建设、乌拉特中网站制作、乌拉特中网页制作以及乌拉特中网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,乌拉特中网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到乌拉特中省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

普通的类方法需要对象实例化之后才能调用 。

python 类方法和静态方法的区别

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。

逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。

在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆。

而在python中,方法分为三类实例方法、类方法、静态方法。代码如下:

 class Test(object):

def InstanceFun(self):

print("InstanceFun");

print(self);

@classmethod

def ClassFun(cls):

print("ClassFun");

print(cls);

@staticmethod

def StaticFun():

print("StaticFun");

t = Test(); 

t.InstanceFun();# 输出InstanceFun,打印对象内存地址“__main__.Test object at 0x0293DCF0”

Test.ClassFun(); # 输出ClassFun,打印类位置 class '__main__.Test'

Test.StaticFun(); # 输出StaticFun

t.StaticFun(); # 输出StaticFun

t.ClassFun(); # 输出ClassFun,打印类位置 class '__main__.Test'

Test.InstanceFun(); # 错误,TypeError: unbound method instanceFun() must be called with Test instance as first argument

Test.InstanceFun(t); # 输出InstanceFun,打印对象内存地址“__main__.Test object at 0x0293DCF0”

t.ClassFun(Test); # 错误 classFun() takes exactly 1 argument (2 given)

可以看到,在python中,两种方法的主要区别在于参数。实例方法隐含的参数为类实例self,而类方法隐含的参数为类本身cls。

静态方法无隐含参数,主要为了类实例也可以直接调用静态方法。

所以逻辑上类方法应当只被类调用,实例方法实例调用,静态方法两者都能调用。主要区别在于参数传递上的区别,实例方法悄悄传递的是self引用作为参数,而类方法悄悄传递的是cls引用作为参数。

python实现了一定的灵活性使得类方法和静态方法,都能够被实例和类二者调用

Python中静态方法和类方法的区别

一、先是在语法上面的区别:

1、静态方法不需要传入self参数,类成员方法需要传入代表本类的cls参数;

2、静态方法是无妨访问实例变量和类变量的,类成员方法无法访问实例变量但是可以访问类变量

二、使用的区别:

由于静态方法无法访问类属性,实例属性,相当于一个相对独立的方法,跟类其实并没有什么关系。这样说来,静态方法就是在类的作用域里的函数而已。


分享文章:python静态函数作用 python中的静态方法
当前路径:http://cdxtjz.com/article/dooegpg.html

其他资讯