首先确定一点就可以理解,方法是对于类的实例或者类本身来讲的
类中有一般方法,静态方法和类方法
对象的一般方法叫做方法,类的一般方法叫函数
静态方法相当于类外定义,都被视为函数
类方法对于类和实例来说,都被视为方法
class Foo:
def fun1(self):
return 'normal'
@staticmethod
def fun2():
return 'staticmethod'
@classmethod
def fun3(cls):
return 'classmethod'
f = Foo()
print(f.fun1, Foo.fun1)
print(f.fun2, Foo.fun2)
print(f.fun3, Foo.fun3)
<bound method Foo.fun1 of <__main__.Foo object at 0x000001AF35DE5FD0>> <function Foo.fun1 at 0x000001AF35DD2400>
<function Foo.fun2 at 0x000001AF35DD2488> <function Foo.fun2 at 0x000001AF35DD2488>
<bound method Foo.fun3 of <class '__main__.Foo'>> <bound method Foo.fun3 of <class '__main__.Foo'>>