函数与方法的区别


并不是类中的调用都叫方法


1、函数要手动传self,方法不用传self。

2、如果是一个函数,用类名去调用,如果是一个方法,用对象去调用。

class Foo(object):
def func(self, name):
print('hello ' + name)

#实例化
obj = Foo()

# 执行方式一: 对象调用的func是方法
obj.func('xiaomi') #func 方法

# 执行方式二:类名调用的func是函数
Foo.func('self', 'daliu') # 函数

判断函数和方法的方式

class Foo(object):
def func(self, name):
print('hello ' + name)


from types import FunctionType, MethodType

obj = Foo()
print(isinstance(obj.func, FunctionType)) # False
print(isinstance(obj.func, MethodType)) # True #说明这是一个方法
print(isinstance(Foo.func, FunctionType)) # True #说明这是一个函数。
print(isinstance(Foo.func, MethodType)) # False