method和function的区别

首先,从概念上去分。函数能够当作一个数学上的概念,好比说完成加减乘除的函数。它其实有一个内在的约束:就是若是参数相同,对一个函数的每次调用返回的结果应该始终同样。
而方法是要和对象联系起来的。并且它有一个银行的参数:就是它所做用的对象。而这些更多地是在面向对象的语境里来讲。python

 而从Python的定义来看,它将method做为function的一种特例来处理了。但当你在文档里看到instance method object和function object的说法时,你应该了解他们的差别函数

01.>>> class MyClass:  
02.    i = 12345  
03.    def f(self):  
04.        return "hello world"  
05.>>> x = MyClass()  
06.>>> x.f.__class__  
07.<class 'method'>  
08.>>> MyClass.f.__class__  
09.<class 'function'>

从上面的例子能够看出,一个是method object,一个是function object。 code

此外,Python里面还有staticmethod和classmethod的概念,他们和普通的method又有些区别。对象

->classmethod将类做为第一个隐含的参数文档

->而staticmethod没有任何隐含的参数,有点相似于Java里的static数学

01.>>> class MyClass:  
02.    i = 12345 
03.    @staticmethod  
04.    def f(self):  
05.        return "hello world"  
06.    def add(x, y):  
07.        return x+y  
08.    @classmethod  
09.    def foo(cls):  
10.        print(cls)  
11.>>> MyClass.f.__class__  
12.<class 'function'>  
13.>>> MyClass.add.__class__  
14.<class 'function'>  
15.>>> MyClass.foo.__class__  
16.<class 'method'>  
17.>>> x = MyClass()  
18.>>> x.f.__class__  
19.<class 'function'>  
20.>>> x.add.__class__  
21.<class 'method'>  
22.>>> x.foo.__class__  
23.<class 'method'>  
24.>>> x.foo()  
25.<class '__main__.MyClass'>
相关文章
相关标签/搜索