python中实例方法分类_荐Python 类中的方法分类以及特点详解 [OOP][实例方法][类方法][静态方法][方法的调用方式][实例方法的“绑定”调用方式][实例方法的“非绑定”调用方式]...

您的“关注”和“点赞”,是信任,是认可,是支持,是动力…

如意见相佐,可留言。

本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

1 Python 类中的方法分类概述

实例方法:在类中定义的方法通常默认都是实例方法,包括构造方法。

类方法:至少要有一个形式参数,通常命名为 cls,Python 会自动将类本身(注意:不是类对象)绑定给 cls 参数,无需显式为 cls 传参;并且类方法需要用 @classmethod 修饰符进行修饰。

静态方法:静态方法需要使用 @staticmethod 修饰符进行修饰。

2 Python 实例方法

2.1 实例方法概述

在类中定义的方法通常默认都是实例方法,包括构造方法。

实例方法最大的特点就是,它最少也要包含一个 self 参数,并且作为第一个参数,用于绑定(Python 会自动完成绑定)调用此方法的实例对象(调用者)。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 实例方法

def info(self):

print('info() 实例方法被执行了。')

2.2 实例方法的调用方式

(1)“绑定”方式

用类的实例对象调用类成员的方式称为“绑定方式”。

实例方法通常会用类对象直接调用。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 实例方法

def info(self):

print('info() 实例方法被执行了。')

demo = Demo() # 创建 Demo 类的实例对象

demo.info() # 用 Demo 类的实例对象调用实例方法 info()

运行结果:

构造方法被执行了。

info() 实例方法被执行了。

(2)“非绑定”方式

Python 中允许使用类名直接调用实例方法,但必须手动为该实例方法的第一个 self 参数传递参数,这种调用方法的方式被称为“非绑定方式”。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 实例方法

def info(self):

print('info() 实例方法被执行了。')

demo = Demo() # 创建 Demo 类的实例对象

Demo.info(demo) # 使用类名 Demo 直接调用实例方法 info(),并手动为实例方法 info() 传入实例对象(demo)

运行结果:

构造方法被执行了。

info() 实例方法被执行了。

3 Python 类方法

3.1 类方法概述

Python 类方法,至少要有一个形式参数,通常命名为 cls,Python 会自动将类本身(注意:不是类对象)绑定给 cls 参数,无需显式为 cls 传参;并且类方法需要用 @classmethod 修饰符进行修饰。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 类方法

@classmethod

def info(cls):

print('info() 类方法被执行了。')

3.2 类方法的调用

建议:使用类名直接调用,因为Python 会自动将类本身(注意:不是类对象)绑定给 cls 参数,无需显式为 cls 传参。

不建议:使用实例对象来调用。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 类方法

@classmethod

def info(cls):

print('info() 类方法被执行了。')

Demo.info() # 类名直接调用类方法

运行结果:

info() 类方法被执行了。

4 Python 静态方法

4.1 静态方法概述

静态方法需要使用 @staticmethod 修饰符进行修饰。

在类的静态方法中无法调用任何类属性和类方法,因为静态方法没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 静态方法

@staticmethod

def info():

print('info() 静态方法被执行了。')

4.2 静态方法的调用

静态方法的调用,既可以使用类名直接调用,也可以使用类对象调用。

举例如下所示:

# 定义类

class Demo:

# 构造方法也是实例方法

def __init__(self):

print('构造方法被执行了。')

# 定义 info() 静态方法

@staticmethod

def info():

print('info() 静态方法被执行了。')

Demo.info() # 类名直接调用静态方法

# 使用实例对象调用静态方法

demo = Demo() # 创建实例对象

demo.info()

运行结果:

info() 静态方法被执行了。

构造方法被执行了。

info() 静态方法被执行了。

【友情链接】

微信公众号:码农阿杰

【参考资料】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值