Python的函数和方法如何区分呢?-天天即时看

2023-04-06 14:38:08 来源: 博客园


(相关资料图)

结论>>>:无论是函数还是方法都用def关键字来定义方法:只要是自动传值都是方法、由谁来调用、会把自身传入函数:有几个值就传几个值否则会报错

目录一、详细介绍函数和方法二、用几个关键字来判断三、通过代码小案例验证一、详细介绍函数和方法

1. 函数Python中的函数其实就是我们没有学面向对象编程之前一直在用的编程思想有几个参数就要传几个参数,否则会报错2. 方法绑定给类的方法:对象可以调用,会自动把类传入绑定给对象的方法:类可调用但是会变成普通函数

二、用几个关键字来判断
MethodType    # 判断检查对象是不是方法FunctionType  # 判断检查对象是不是函数isinstance    # 判断检查对象是不是一个类的对象issubclass    # 判断检查对象是不是另一个类的子类
三、通过代码小案例验证
from types import MethodType, FunctionType# 名字为Foo的类class Foo(object):    # 绑定给对象的方法    def fetch(self):        pass    # 绑定给类的方法    @classmethod    def test(cls):        pass    # 绑定给类的静态方法    @staticmethod    def test1():        pass# 类名加括号实例化对象obj = Foo()# 普通函数def add():    passprint(isinstance(Foo.fetch, MethodType))  # False  类来调用对象的绑定方法,该方法就变成了普通函数print(isinstance(obj.fetch, MethodType))  # True   对象来调用自己的绑定方法,fetch就是方法print(isinstance(Foo.fetch, FunctionType))  # True   类来调用对象的绑定方法,该方法就变成了普通函数print(isinstance(add, FunctionType))  # True   就是个普通函数print(isinstance(add, MethodType))  # False  就是个普通函数print(isinstance(Foo.test, MethodType))  # True   test 是绑定给类的方法,类来调用,就是方法print(isinstance(obj.test, MethodType))  # True   对象调用类的绑定方法,还是方法print(isinstance(Foo.test1, MethodType))  # False  是普通函数print(isinstance(obj.test1, MethodType))  # False  是普通函数print(isinstance(obj.test1, FunctionType))  # True   静态方法,就是普通函数,对象和类都可以调用,有几个值就传几个值
标签:

Copyright   2015-2022 欧洲家电网版权所有   备案号:沪ICP备2022005074号-23   联系邮箱: 58 55 97 3@qq.com