【Python笔记】向量:@classmethod与 @staticmethod。零基础

类成员

比较@classmethod与 @staticmethod
共同点:

  • 两个都是装饰器,装饰的成员函数可以通过类名.方法名(…)来调用

区别:

  • 最显著的特点是classmethod需要传递一个参数cls,而staticmethod不需要。因此可以访问、修改类的属性,类的方法,实例化对象等,避免硬编码;而staticmethod不行,
  • classmethod可以判断出自己是通过基类被调用,还是通过某个子类被调用
    实例成员
实例成员
class A:
    def __init__(self, 参数):
        self.实例变量 = 参数

    def 实例方法名称(self):
        print(self.实例变量)


a01 = A(10)
print(a01.实例变量)
a01.实例方法名称()  # 自动传递对象地址

@classmethod

类成员
class B:
    #无论创建多少对象,类变量只有一份,被所有对象所共享。
    类变量 = 10
	#类方法:操作类变量
    @classmethod
    def 类方法名称(cls):
        print(cls.实例变量)

print(B.类变量)
B.类方法名称()  #自动传递类名

@staticmethod

class C:
    # 3.静态方法
    @staticmethod
    def fun01():
        print("方法执行啦")


C.fun01()

具体实例:

类方法

1.语法
(1)定义:
    @classmethod
    def 方法名称(cls,参数列表):
      方法体
(2)调用:类名.方法名(参数列表)
2.说明
– 至少有一个形参,第一个形参用于绑定类,一般命名为’cls’
– 使用@classmethod修饰的目的是调用类方法时可以隐式传递类。
– 类方法中不能访问实例成员,实例方法中可以访问类成员。
3.作用:操作类变量。

class  ICBC:
    #类变量
    moneys = 9999
    #类方法  #相当于大家共享的“饮水机”
    @classmethod   #类方法使用classmethod修饰器修饰
    def print_total_moneys
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值