classMyClass(object):# 成员方法 deffoo(self,x):print("executing foo(%s, %s)"%(self,x))# 类方法 @classmethod defclass_foo(cls,x):print("executing class_foo(%s, %s)"%(cls,x))# 静态方法 @staticmethod defstatic_foo(x):print("executing static_foo(%s)"%x) 2. 调用方式 (1)调用成员...
场景:一个工具类Shape,提供与几何形状相关的功能 classShape:shapes_created=0# 类属性,记录创建的形状数量def__init__(self,name):self.name=name@staticmethoddefcalculate_area(length,width):"""计算矩形面积,不需要类或实例参与"""returnlength*width@classmethoddefcreate_shape(cls,name):"""工厂方法:创建一...
Web.foo_staticmethod("Hello",",AirPython")#2、使用类名(子类)去调用静态方法 Django.foo_staticmethod("Hello",",AirPython") 3.@classmethod 装饰器 @classmethod 修饰的方法称为:类方法,在使用的时候,会将类本身作为第一个参数 cls 传递给类方法 代码语言:javascript 复制 # 类方法,第一个参数为cls,代表...
def classMethod(cls, kkk): # print('class method', cls) method_test_instance = cls(kkk.split()[0]) print('this is the usage of classmethod ! you can see it !!! --- {}'.format(method_test_instance.my_string)) print(type(method_test_instance)) @staticmethod def staticMethod(): p...
classmethod:类方法 staticmethod:静态方法 在python中,静态方法和类方法都是可以通过类对象和类对象实例访问。但是区别是: staticmethod:静态方法 功能:将被装饰的函数从类中分离出来,该函数不能访问类的属性,简单说可以将该函数理解为一个独立的函数,不允许使用self。
Python面向对象编程中,类中定义的方法可以是 @classmethod 装饰的 类方法 ,也可以是 @staticmethod 装饰的 静态方法 ,用的最多的还是不带装饰器的 实例方法 ,如果把这几个方法放一块,对初学者来说无疑是一头雾水,那我们该如何正确地使用它们呢? 先来个总结: ...
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法); 调用:实例对象和类对象都可以调用。 静态方法 定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用实例的属性和方法;可以调用类的...
python @classmethod 的使用场合 这里解释的不错。 至于staticmethod用法和classmethod在继承的时候有点区别...
总之,classmethod和staticmethod在Python中为面向对象编程提供了强大的功能。它们不仅在美学和命名空间上为代码提供了组织结构,更在多态性、类管理、构造逻辑和配置等方面提供了实际的使用场景和解决方案。合理使用它们,可以显著提高代码的可维护性和可扩展性,实现更加灵活和高效的面向对象设计。