python 静态方法,类方法,类下面的函数区别
@clssmenthod(类方法) 与 @staticmethod(静态方法) 与类下面的函数的区别:
1.@classmethod修饰的方法def name(cls)需要通过cls参数传递当前类本身。
2.@staticmethod修饰的方法def name()不需要传递参数他和普通的函数是一样的。
3.类下面的函数def name(self)需要再方法里面加个self参数隐式的传递当前类对象的本身。
1、@clssmenthod 的使用
class class_name():
c=12 #这叫类属性
def __init__(self,a,b):
self.a=a #这叫对象属性
self.b=b
@clssmenthod
def name(cls):
cls().age() #调用类里面的方法
pass
def age(self):
pass
#调用时候不用实例化这个类,直接类名字.方法名()就行了,要实例化也可以。例如:class_name().name或class_name.name()
#可以调用其他方法的类属性值或者其他方法,例如:cls.age(),但是不能调用对象属性 。
#调用类里面的方法,例如:cls().age()
2、@staticmethod 的使用 (使用一般是,一个函数如果 和类没有关系,和对象也没有关系的时候,就可以使用静态方法)
class class_name():
c=12 #这叫类属性
def __init__(self,a,b):
self.a=a #这叫对象属性
self.b=b
@staticmethod
def name():
pass
#调用时候不用实例化这个类,直接类名字.方法名()就行了,要实例化也可以。例如:class_name().name或class_name.name()
#这种方法不可以调用其他方法的属性值与其他方法
class_name.name()
3、类下面的函数的使用
class class_name():
def __init__(self,a,b):
pass
def name(self):
pass
#调用时候需要实例化这个类,也需要传递参数,例如:class_name(a,b).name()