python静态⽅法与类⽅法_浅谈python中的⼀般⽅法、静态⽅
法(staticmeth。。。
我们先来简单谈谈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")
⾸先我们⽤类名.⽅法名()来调⽤:
结果如下:
>>> st()
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)
>>> st2()
class
>>> st3()实例化类和实例化对象
static
可以看到,⼀般⽅法test()调⽤异常,必须通过实例来调⽤接着我们再⽤实例调⽤:
>>> t = TestMethod()
>>> t.test()
object
>>> t.test2()
class
>>> t.test3()
static

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。