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

类语法的三种方法:

https://blog.csdn.net/qq_43422918/article/details/89645735

https://blog.csdn.net/helloxiaozhe/article/details/79940321

猜你喜欢

转载自www.cnblogs.com/xiao-yu-/p/12706009.html
今日推荐