区别 Python 中的类方法和实例方法

区别 Python 中的类方法和实例方法

在Python中,我们可以在一个类中定义三种类型的方法,下面是其描述:

  1. 实例方法:它们与实例相关联,在执行它们之前需要先创建一个实例。它们接受第一个属性作为对实例(self,可以用汉字代替,我们在前面的文章里见到过)的引用,并可以读取和更新实例的状态。__init__是一个构造函数方法,是实例方法的一个示例;
  2. 类方法:这些方法是用@classmethod装饰器声明的。这些方法不需要类实例来执行。对于此方法,类引用(使用cls作为约定,也可以使用任何一个你喜欢的汉字代替)将作为第一个参数;
  3. 静态方法:这些方法是用@staticmethod修饰符声明的。他们无法访问clsself对象。静态方法类似于接受某些参数并根据参数值提供输出的实用函数——例如,如果我们需要评估某些输入数据或解析数据进行处理,我们可以编写静态方法来实现这些目标。静态方法的工作方式类似于我们在模块中定义的常规函数,但在类名称空间的上下文中可用。

为了说明如何在Python中定义和使用这些方法,我创建了一个简单的程序,如下所示(我将在能使用汉字的地方,就使用汉字,请英语爱好者见谅):

class 小汽车类:
    质量标准 = "国家质量标准"
    
    def __init__(, 颜色, 品牌):.颜色 = 颜色 
        我.品牌 = 品牌
        
    def 打印_颜色():
        print(f"小汽车的颜色是:{.颜色}")
        
    def 打印_品牌():
         print(f"小汽车的品牌是:{.品牌}")
        
    @classmethod 
    def 打印_质量标准(我之类):
        print(f"我之质量标准:{我之类.质量标准}")
        print(f"我之类名字是:{我之类.__name__}")
        
    @staticmethod 
    def 打印_你好():
        print("哇哦,这是一个来自于静态方法的问候")
        

if __name__ == "__main__":
    小汽车  = 小汽车类("白色", "国威")
    小汽车.打印_颜色()
    小汽车.打印_品牌()
    小汽车.打印_质量标准()
    小汽车.打印_你好()
    
    小汽车类.打印_颜色(小汽车)
    小汽车类.打印_质量标准()
    小汽车类.打印_你好()

这个程序的输出结果是:

小汽车的颜色是:白色
小汽车的品牌是:国威
我之质量标准:国家质量标准
我之类名字是:小汽车类
哇哦,这是一个来自于静态方法的问候
小汽车的颜色是:白色
我之质量标准:国家质量标准
我之类名字是:小汽车类
哇哦,这是一个来自于静态方法的问候

在这个程序中,我们做了以下事情:

  1. 我们创建了一个小汽车类类,它有一个类属性(质量标准)、一个类方法(打印_质量标准)、一种静态方法(打印_你好)、实例属性(颜色品牌)、实例方法(输出_颜色输出_品牌)和构造函数方法(__init__)。
  2. 我们使用小汽车类类的构造函数创建了一个小汽车类类的实例。
  3. 使用实例变量(本例中为小汽车),我们调用了实例方法、类方法和静态方法。
  4. 使用类名(本例中为小汽车类),我们再次触发了实例方法、类方法和静态方法。请注意,我们可以使用类名触发实例方法,但我们需要将实例变量作为第一个参数传递(这也解释了为什么我们需要每个实例方法的(self)参数)。

<结束>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dowhileprogramming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值