python中类方法和静态方法的区别_浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)...

我们先来简单谈谈python类中一般方法、静态方法和类方法的区别。

1、类中的一般方法

一般方法在定义的时候,需要有表示类实例的参数(通常以self表示,例如def foo(self,arg1,arg2……)),一般方法不能通过类名.方法名()来调用,必须先创建类的实例,然后通过实例.方法名()来调用。

2、类中的静态方法

类中的静态方法用“@staticmethod”来修饰,静态方法在定义的时候,不需要表示类的实例,可想类外的方法定义一样。静态方法可以通过类名.方法名()和实例.方法名()调用。

3、类中的类方法

类方法用“@classmethod”来修饰,类方法在定义的时候,需要有表示类对象的参数。类方法也可以通过类名.方法名()和实例.方法名()调用。(注意:python中,类也是一个对象,这里所说的类对象是指类本身,而非类实例化得对象)

下面我们来看看实际例子:

首先,定义一个类:class TestMethod(object):  #一般方法、静态方法和类方法与是否新式类无关,这里我们举例用了新式类,但要注意,以下分析同样适用于经典类

def test(self):        #这里的self参数是必须的,它表示一个类的实例,但并不一定要用字符串“self”来表示,可以用任意字符表示,只是我们通常使用self表示

print("object")

@classmethod

def test2(clss):       #这里的clss参数意思必须的,它表示一个类对象,通常该形参我们中“cls”表示

print("class")

@staticmethod

def test3():           #这里可以不需要任何形参

print("static")

首先我们用类名.方法名()来调用:

结果如下:>>> TestMethod.test()

Traceback (most recent call last):

File "", line 1, in 

TypeError: unbound method test() must be called with TestMethod instance as first argument (got nothing instead)

>>> TestMethod.test2()

class

>>> TestMethod.test3()

static

可以看到,一般方法test()调用异常,必须通过实例来调用

接着我们再用实例调用:>>> t = TestMethod()

>>> t.test()

object

>>> t.test2()

class

>>> t.test3()

static

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值