Python中 MethodType, FunctionType的区别和联系

本文详细解析了Python中类方法、静态方法及实例方法的类型区别,并通过具体示例展示了不同方法类型的判断方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from types import FunctionType, MethodType


class Car(object):

    def __init__(self):
        pass

    def run(self):
        print("my car can run!")

    @staticmethod
    def fly(self):
        print("my car can fly!")

    @classmethod
    def jumk(cls):
        print("my car can jumk!")


c = Car()

# type(obj) 表示查看obj是由哪个类创建的.

# 实例方法
print(type(c.run))  # <class 'method'>
print(type(Car.run))  # <class 'function'>

# 静态方法
print(type(c.fly))  # <class 'function'>
print(type(Car.fly))  # <class 'function'>

# 类方法,因为类在内存中也是对象,所以调用类方法都是方法类型
print(type(c.jumk))  # <class 'method'>
print(type(Car.jumk))  # <class 'method'>


# 使用FunctionType, MethodType 来判断类型
# 实例方法
print(isinstance(c.run,MethodType)) # True
print(isinstance(Car.run,FunctionType)) # True

# 静态方法
print(isinstance(c.fly,FunctionType)) # True
print(isinstance(Car.fly,FunctionType)) # True

# 类方法
print(isinstance(c.jumk,MethodType))   # True
print(isinstance(Car.jumk,MethodType))   # True

总结结论: 
1. 类⽅法.不论任何情况,都是⽅法.
2. 静态方法,不论任何情况.都是函数
3. 实例方法,如果是实例访问.就是⽅法.如果是类名访问就是函数.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值