实际上方法和函数是不一样的,下面我们了解一下方法与函数的区别
方法与函数的区别
如何确定函数与方法
- 通过打印函数(方法)名
def func():
pass
print(func)
class A:
def func(self):
pass
print(A.func)
obj = A()
print(obj.func)
- 通过types模块验证
from types import FunctionType
from types import MethodType
def func():
pass
class A:
def func(self):
pass
obj = A()
print(isinstance(func,FunctionType))
print(isinstance(A.func,FunctionType))
print(isinstance(obj.func,FunctionType))
print(isinstance(obj.func,MethodType))
需要注意的是,静态方法实际上是函数
from types import FunctionType
from types import MethodType
class A:
def func(self):
pass
@classmethod
def func1(self):
pass
@staticmethod
def func2(self):
pass
obj = A()
print(isinstance(A.func2,FunctionType))
函数与方法的区别(了解)
- 函数的是显式传递数据的。如我们要指明为len()函数传递一些要处理数据
- 函数则跟对象无关
- 方法中的数据则是隐式传递的
- 方法可以操作类内部的数据
- 方法跟对象是关联的。如我们在用strip()方法是,是不是都是要通过str对象调用,比如我们有字符串s,然后s.strip()这样调用。是的,strip()方法属于str对象
|