看装饰器这一节
https://www.cnblogs.com/xumaomao/articles/10984271.html
相当于C++里的静态函数
#!/usr/bin/ env python # -*- coding:utf-8 -*- class Student(object): #类属性 name = ‘fdzwdt‘ def __init__(self,name): #实例对象属性 self.name = name #实例方法,只能由实例对象来调用 def get_name_ins(self): return self.name #类方法,可以通过类来调用,也可以通过实例对象调用 @classmethod def get_name_cls(cls): return cls.name #静态方法,可以通过类来调用,也可以通过实例对象调用 #主要功能就是对__init__构造函数进行重载 @staticmethod def get_name_sta(name): return Student(name).name st = Student(‘weidt‘) print(‘ins_name:‘+st.get_name_ins()) print(‘cls_name:‘+Student.get_name_cls()) print(‘sta_name:‘+Student.get_name_sta(‘wdt‘))
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): bar = 1 def func1(self): print (‘foo‘) @classmethod def func2(cls): print (‘func2‘) print (cls.bar) cls().func1() # 调用 foo 方法 A.func2() # 不需要实例化
输出结果为:
func2 1 foo
原文:https://www.cnblogs.com/xumaomao/p/15046438.html