PYTHON-方法与函数的区别
1.结论:
#与类和实例无绑定关系的function都属于函数(function); #与类和实例有绑定关系的function都属于方法(method)。
2.验证:
from types import FunctionType,MethodType class Foo(object): def __init__(self): self.name = "luoyue" self.class1 = "senior" def func(self): print(self.name,self.class1) obj = Foo() print(obj) print(type(obj.func)) print(isinstance(obj.func,MethodType))#判断判断一个对象是否是一个已知的类型,为什么不加括号呢?加了就是调用了。 print(type(Foo.func)) print(isinstance(Foo.func,FunctionType))
#output:
<__main__.Foo object at 0x03D47190> <class 'method'> True <class 'function'> True
说明:类对象(也就是上面的obj )调用func是方法,类(Foo)调用func是函数;(python3 中才有的区分,python2 中全部称为方法)
3.python 类语法中有三种方法,实例方法,静态方法,类方法。
# coding:utf-8 class Book(object): def __init__(self, title): #self表示实例本身 self.title = title @classmethod def class_method_create(cls, title): #这个cls = class,表示类本身 book = cls(title=title) return book @staticmethod def static_method_create(title): book= Book(title) return book book1 = Book("use instance_method_create book instance") book2 = Book.class_method_create("use class_method_create book instance") book3 = Book.static_method_create("use static_method_create book instance") print(book1.title) print(book2.title) print(book3.title)
#output: use instance_method_create book instance use class_method_create book instance use static_method_create book instance >>>
参考网址:
isinstance:https://www.runoob.com/python/python-func-isinstance.html
区别:https://www.py.cn/jishu/jichu/13644.html
类语法的三种方法: