今天学习方法中的类方法,静态方法还有实例化方法。
下面看一段代码:
class ee: //类
def gg(self): //实例化方法
print(id(self))
@classmethod //类方法
def dd(self):
print(id(self))
@staticmethod // 静态方法
def ss():
print(123)
d = ee()
e = ee()
d.gg()
e.gg()
d.dd()
e.dd()
d.ss()
下面是结果:
2212904264704 //d.gg()
2212904264760 //e.gg()
2212869157352 //d.dd()
2212869157352 //e.dd()
123 //d.ss()
根据上面的代码可以看出实例化方法和普通方法一样声明,而类方法和静态方法是用修饰符声明的
1.类方法使用@classmethod 修饰
2.静态方法使用 @staticmethod修饰
3.实例化方法不变
除了以上明显的区别外还有:
1.实例化方法只能通过实例调用,实例化的第一个定义的参数只能是实力本身的引用
2.类方法定义的第一个参数只能是类对象的引用,可以通过类或者实例直接调用
3.静态方法没有默认的必须参数,可以通过类或实例调用
根据结果可以看出实例化方法每次调用的类id都不同而类方法每次调用都一样。