1.区别:
实例方法 | 类方法 | 静态方法 | |
第一个默认参数 | self :表示当前类的一个实例 |
cls :表示当前类本身 | 没有第一个默认参数 |
修饰器 | 没有修饰器 | @classmethod | @staticmethod |
方法调用 | 实例对象 | 类名/实例对象 | 类名/实例对象 |
使用 | 方法内需要使用实例属性 | 方法内需要使用类属性/类方法 | 方法内无实例属性/类属性/类方法的操作 |
class A(object):
class_name='类名'
def __init__(self,name):
self.isinstant_name=name
def method(self):
print('self=',self)
print("实例属性=",self.isinstant_name)
@classmethod
def class_method(cls):
print('cls=',cls)
print("类属性=",cls.class_name)
@staticmethod
def static_method():
print("静态方法")
print('#通过实例调用三种方法#')
a = A('isinstant_name')
a.method()
a.class_method()
a.static_method()
print('#通过类名调用静态方法和类方法#')
A.class_method()
A.static_method()
output:
#通过实例调用三种方法#
self= <__main__.A object at 0x0000025226DFDC88>
实例属性= isinstant_name
cls=
类属性= 类名
静态方法
#通过类名调用静态方法和类方法#
cls=
类属性= 类名
静态方法
参考:
https://blog.csdn.net/helloxiaozhe/article/details/79940321