【python】类方法

文章目录


前言

本文主要介绍类方法。

一、类方法

关键字:@classmethod

 @classmethod
    def study(cls):
        pass

类中的普通方法与类方法的区别

  • 类方法上有关键字@classmethod
  • 类方法的参数为(cls),普通方法参数为(self)
  • 普通方法的调用需要创建对象,类方法可以不用创建对象,直接使用类进行调用。

分析代码

# 类方法
class Person:
    age = 18  # 类属性

    def __init__(self, name):
        self.name = name  # 对象属性

    def read(self):
        print("{}正在读书...".format(self.name))

    @classmethod
    def study(cls):
        print('*********输出类名*************')
        print(cls)
        print('*********输出类属性*************')
        print(cls.age)
        print('*********输出对象属性*************')
        # print(cls.name) #报错


wang = Person('wang') #创建对象
print("-----------调用类中的普通方法——-----------")
wang.read()
print("-----------调用类方法——-----------")
wang.study()
print("-----------使用类名调用类方法——-----------")
Person.study()


运行结果

-----------调用类中的普通方法——-----------
wang正在读书...
-----------调用类方法——-----------
*********输出类名*************
<class '__main__.Person'>
*********输出类属性*************
18
*********输出对象属性*************
-----------使用类名调用类方法——-----------
*********输出类名*************
<class '__main__.Person'>
*********输出类属性*************
18
*********输出对象属性*************

首先创建了一个Person类,程序运行首先给这个类开辟空间,类中包括__init__()方法,普通方法和类方法,分别定义了类属性和对象属性。
  程序运行到创建对象wang,会给对象开辟空间,运行__init__()方法,对象会得到name和age属性,但这两个属性的创建也有所不同,不作详述。
  创建完对象后,使用对象调用了普通方法read,这比较简单,就是基本的调用,执行方法后打印。read方法的参数self就是这个对象。
  然后使用对象调用类方法,也没有问题,可以看到打印的类就是Person的类名。然后在类方法中调用了两个属性,类属性和对象属性,可以正常调用类属性,但无法调用对象属性。这是因为在创建类时开辟的那块空间里并没有name属性,这个属性是后来开辟对象空间执行__init__()方法时创建的,所以使用cls.name是找不到该属性的。所以会报错。
  多说一句,在上述的程序中,类方法和普通方法的参数分别是cls和self,在这个小程序里self就等于wang这个对象,cls等于Person这个类。
  最后是类方法的特殊用法,可以在不创建对象的情况下,直接使用类名进行调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值