类方法、静态方法
1 静态方法
定义形式:@staticmethod装饰,参数不需要self
静态方法无法引用或访问实例属性,可通过类.类变量访问类属性
可以采用类、类实例进行调用
与类相关,但不依赖和改变类和实例
类相关工具方法放在其中,使函数归于类,便于代码的管理
class
StaticMethodDemo:
b=
10
def
__init__(self,a=
0
):
self.a=a
@staticmethod
def
staticFun():
print
(StaticMethodDemo.b)
# print(self.a)
if
__name__ ==
'__main__'
:
smd=StaticMethodDemo()
StaticMethodDemo.staticFun()
smd.staticFun()
2 类方法
定义形式:@classmethod,需要带cls参数,表示自身这个类
无法引用或访问实例属性
可以采用类、类实例进行调用
与类相关,但不依赖和改变类和实例
工厂方法,创建类实例,完成有关预处理
类内调用静态方法,不需要硬编码类名
class
ClassMethodDemo:
b=
10
def
__init__(self,a=
0
):
self.a=a
@staticmethod
def
staticFun():
return
ClassMethodDemo.b
@classmethod
def
classFun(cls,c=
30
):
return
cls(cls.staticFun()*c)
#返回类实例
# print(self.a)
if
__name__ ==
'__main__'
:
cmd=ClassMethodDemo.classFun(
2
)
print
(cmd.a);