当前位置:首页 » 编程语言 » python静态类方法

python静态类方法

发布时间: 2024-04-30 01:30:28

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

类方法,可以调用类属性。。。用于操作一些类中的公有属性。。。比如这个士兵类,每个士兵都拥有一把相同的枪(gun),都有相同的最大血量(maxhp),如果在创建对象的时候,一个一个的赋值,就会显得比较多余。。。因此,把这两个属性提出来,作为一个公有属性。。即每个士兵对象,都拥有一把95式步枪,都拥有30的最大血量。。之后声明一个类方法(public),之后可以在类方法中,针对这两个公有的属性进行操作。。。

静态方法,其实更像一个与类几乎无关的函数。。不能操作类中的任何属性。。所以它并不是用来操作类与对象本身的。。。但它又可以被对象调用。。。。比如游戏中,与士兵对话,士兵说话的内容一般存在数据库中。。而当主角与士兵对话,针对数据库查询,并输出到UI界面的相关工作,就可以放在这个函数里。。这样会让代码结构更清晰。。。当然,如果不嫌乱,写在类方法中,也是可以的。。。有人觉得PYTHON的静态方法是鸡肋。。它也确实不是必须的,但有时候却可以让代码结构更清晰。。。比如你有几十种不同的士兵类,你要找到对应每一个类的数据操作相关的函数,就会显得很困难。。。适当使用静态方法,就显得一目了然

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

类方法的第一个parameter是类自己,然后才是参数。而静态方法是和类无关的,也不会自动导入类作为参数。可以说静态方法只是一个和自己所在的类无关的一个方法。可以随意你怎么用这个方法。抽象点说静态方法就是你在其他语言里面用的普通方法,类方法是Java里的类方法一样的。

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

静态方法是调用时跟具体实例没有关联的方法,不需要使用self和cls参数。
类方法是调用的时候,要使用类的相关成员的方法,需要使用cls参数,但不用self参数。
参考:刘江的Python教程

D. 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实现了一定的灵活性使得类方法和静态方法,都能够被实例和类二者调用

热点内容
电脑主机做服务器下载快不 发布:2024-11-28 00:32:40 浏览:386
冷冻存储盒 发布:2024-11-28 00:21:04 浏览:127
达内幼儿编程 发布:2024-11-28 00:21:02 浏览:320
我的世界下100层是什么服务器 发布:2024-11-28 00:16:50 浏览:548
怎么改配置密码 发布:2024-11-28 00:16:44 浏览:113
服务器芯片v几是什么 发布:2024-11-28 00:15:37 浏览:599
家庭麦克需要什么配置才能用 发布:2024-11-28 00:05:28 浏览:384
c语言then是什么意思 发布:2024-11-27 23:54:07 浏览:195
提升访问 发布:2024-11-27 23:41:39 浏览:821
为什么学习编程 发布:2024-11-27 23:41:37 浏览:942