类方法:
@classmethod
作用:1,类方法是只能访问类变量的方法;
2,类方法需要使用@classmethod 装饰器定义;
3,类方法的第一个参数是类的实例, 约定写成cls
说明:1, 类实例和对象实例都可以调用类方法;
2, 类方法不能方法实例变量
类方法和实例方法对比:
1,类方法能够访问类变量,不能访问实例变量;
实例方法能够访问类变量,也能访问实例变量
2,类方法可以用实例来调用,也可以用类来调用;
实例方法在调用时必须传入实例;
1 class Bank: 2 moneys = 10000000 #一千万 3 @classmethod 4 def total_money(cls): 5 print("某银行总行资金数:", cls.moneys) 6 7 def __init__(self, b): 8 self.branch = b 9 self.moneys = 5000000 10 self.__class__.moneys -= 5000000 11 12 13 Bank.total_money() #某银行总行资金数: 10000000 14 b1 = Bank("xxx地址支行") 15 b1.total_money() #某银行总行资金数: 5000000
静态方法
@staticmethod
作用:1, 静态方法是普通的函数;
2,静态方法定义在类的内部,只能凭借该类和实例调用
3,静态方法需要使用@staticmethod 装饰器定义
4,静态方法与普通函数定义相同,不需要传入self实例参数和cls类参数;
说明:1, 类实例和对象实例都可以调用静态方法;
2, 静态方法不能方法类变量和实例变量;
原文:https://www.cnblogs.com/weizitianming/p/9090916.html