1
neildd 2012-06-07 17:05:54 +08:00
类里面定义的是方法,第一个参数是self,需要实例化类以后调用。
直接定义的是函数,可以在py文件的任何地方随意调用。 |
3
neildd 2012-06-07 17:12:53 +08:00
你把c和java结合起来想一想
|
4
eric_q 2012-06-07 17:17:14 +08:00
class Foo()
def bar a=Foo() a.bar |
6
meteor 2012-06-08 10:32:32 +08:00 1
拿英文解释吧.
方法: method 函数: function |
7
yuelang85 2012-06-08 10:41:11 +08:00 1
方法是一种特殊的函数。
python中,函数(方法)并不是依附与类才能存在。函数并不只是在类中定义。这种直接在模块中而不是类中定义的函数(方法),叫做函数。 而方法,是依附于类的,他们定义在类中,是属于类的,但是他们本质上,还是一个函数。方法的第一个参数不一定必须是self。 这么说吧,凡是def foo()这种,都是函数,在类中定义的函数,就是方法。 |
8
yuelang85 2012-06-08 10:41:43 +08:00
话说,java真是害死人,让人在各种概念中纠结。。。。
|
9
bayuwei2010 2012-06-08 10:43:38 +08:00
如果非要区分:在class 外面定义的叫函数,在class内部定义的叫做class的方法?
|
10
chonerlee 2012-06-08 10:44:45 +08:00 1
属于某个类的函数就是方法
不属于任何类的函数就是函数 |
11
adow 2012-06-08 10:46:08 +08:00 1
python里的实例方法是带了self作为第一个参数的“函数”,类方法是带了cls作为第一个参数的“函数”
|
12
yuelang85 2012-06-08 10:51:59 +08:00
>>> class A:
... def a(self): ... pass ... def b(): ... pass ... @staticmethod ... def c(): ... pass ... @classmethod ... def d(): ... pass ... >>> def f(): ... pass ... >>> type(A.a) <type 'instancemethod'> >>> type(A.b) <type 'instancemethod'> >>> type(A.c) <type 'function'> >>> type(A.d) <type 'instancemethod'> >>> type(f) <type 'function'> >>> dir(A.a) ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'im_class', 'im_func', 'im_self'] >>> type(A.a.im_func) <type 'function'> 别太纠结于概念,这种东西只有看官方文档的时候才用得上,有时候交流得时候,经常把这个两个说混,也没有造成过什么混淆。。。。 |
13
mopig OP |