class MyClass(object):
def __init__(self):
self.ids = "001"
def t1(self, path=""):
print("这个是实例化方法")
@staticmethod
def get_result(path):
print("这个是静态方法")
MyClass().t1() # 显示调用类的实例化方法
print(MyClass().ids)
@classmethod
def get_test1(cls, path):
print("这个是类方法")
cls().t1() # 调用类的实例化方法
print(cls().ids)
MyClass().t1("调用实例化方法")
MyClass.get_result("调用静态方法")
MyClass.get_test1("调用类方法")
总结
- 类中一般包含三种方法
- 实例化方法(
MyClass().t1()
) - 静态方法(
staticmethod
)- 类方法(
classmethod
)
- 类方法(
- 实例化方法(
-
classmethod
(类方法),第一个参数必须是cls
,这个cls
指向了类本身,因此可以直接用cls
实例化来访问类的内部方法或者属性。cls().t1()
-
staticmethod
(静态方法),如果要调用类的内部方法,只能显示地引用类MyClass
,这对继承来说可不是一件好事情MyClass().t1()
因此
- 只要不调用类的内部方法和属性,
classmethod
和staticmethod
都可以使用 - 若要调用类的内部方法和属性,推荐使用
classmethod