Python_类方法

1.基本语法

定义一个类方法, 在Python中类是一个特殊的对象,可以针对类对象,既可以定义类属性,也可以定义类方法,在开发中要定义类属性,只需要在class关键字下方使用赋值语句就可以, 类属性呢,通常用来记录一些跟这个类相关的特征. 针对一个类对象来定一个类方法的语法,在开发中,如果想要定义一个类方法,基本的语法结构跟之前学习的实例方法非常的类似,同样是def关键字,然后呢,跟上方法的名称,在小括号的内部跟上方法的参数就可以.

在定义类方法的时候,有两个细节是务必注意的,第1个细节,要在class关键字上方使用一个classmethod的修饰符, 第2个细节, 类方法的第1个参数必须要是cls,也就是class的缩写cls,classmethod是类方法的意思,这个修饰符就是在告诉Python解释器, 这个修饰符下方的方法是一个类方法,而不是一个实例方法,这个就是classmethod的这个修饰符的作用.

类方法的第1个参数是cls,实例方法的第1个参数必须是self,哪一个对象调用的实例方法, self就是哪一个对象的引用. 这个cls参数跟self是非常类似的,哪一个类调用的方法, cls参数就是哪一个类的引用,在我们让一个对象调用实例方法时, 并不需要传递self这个参数,同样道理, 在我们使用类名点调用类方法的时候,同样也不需要传入cls参数, Python解释下会自动帮我们传递这个参数. 在实例方法内部, self点 可以用来访问当前对象的属性或者调用当前对象的方法,那同样道理在类方法内部, 我们可以使用cls点 来访问当前这个类的类属性,或者调用当前类的其他类方法,这个就是定义类方法的语法.

一句话讲, 基本的语法结构跟实例方法非常类似,只是第1个参数必须是cls,同时在类方法的上方,我们必须要使用classmethod 这个修饰符,classmethod修饰符就是在告诉解释器,把下方的方法当做一个类方法来看待,而不要当做一个实例方法,cls就是调用这个类方法的类引用.


2.案例演练

针对类方法做一个案例演练,在工具类中封装一个方法, 显示工具计数,第1个参数是cls, 就说明这个方法是一个类方法,

要想查看 使用当前这个类 创建对象的个数,要在主程序中使用print函数做个输出,现在就把这个功能封装到类的类方法中,把它封装成一个类方法,在需要的时候就可以直接通过类名来调用了. 

定义了一个工具类,并且定义了一个类属性count, 使用这个类属性来记录所有工具对象的数量.

现在来定义一个类方法,要定义类方法,首先应该输入classmethod这个修饰符,classmethod就是告诉解释器,在下方使用def定义的方法, 是一个类方法, 而不是实例方法. 现在给方法起个名字show_tool_count,类方法的第1个参数应该是cls, 现在敲一个小括号, 敲了小括号之后,Pycharm 会自动增加一个cls参数.

使用print函数做个输出, 写一下工具对象的数量,然后跟上一个%d, 在类方法的内部, 要想访问到当前这个类的属性, 可以使用cls点 来访问当前这个类的类属性.

在类方法的内部要访问当前这个类的属性,就使用cls点就可以访问到了, 现在在工具类中定义了一个类方法,紧接着把光标放在主程序中,先在主程序中创建工具对象,先给变量起个名字tool1,然后使用工具类来创建一个斧头的工具,创建完成,

紧接着应该调用类方法, 因为已经把这个功能封装到了类的内部,现在在类的外部要调用类方法应该使用类名点 的方式, 在点后面跟上类方法的名字就可以. 类方法的第1个参数是cls,哪一个类调用第1个参数就是哪一类.

第1个参数并不需要传递, Python解释器会自动传递. 现在回车选中这个方法,

果然不需要传递这个方法,现在运行一下程序,控制台输出了"工具对象的数量是1".

这是把代码是封装到了一个类方法中,现在再来创建一个工具,来验证一下这个方法能否正常执行,

现在工具创建完成,就直接执行程序,工具对象的数量为2,

回顾一下类方法的定义,要定义类方法,首先输入classmethod 这个修饰符,classmethod 这个修饰符就是告诉解释器, 下方的方法是一个类方法,类方法的第1个参数必须是cls,但是这个参数pycharm 会自动补全, 在类方法内部, 要想访问当前类的属性,或者调用当前类的其他类方法,可以使用cls点的方式就可以. 而在类的外部,要想调用这个类方法, 直接通过类名点的方式, 就可以调用这个类方法了. 

完整代码:

class Tool(object):

    # 使用赋值语句定义类属性, 记录所有工具对象的数量
    count = 0

    @classmethod
    def show_tool_count(cls):

        print("工具对象的数量 %d" % cls.count)

    def __init__(self, name):
        self.name = name

        # 让类属性的值+1
        Tool.count += 1


# 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")

# 调用类方法
Tool.show_tool_count()

运行结果:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值