python-内置装饰器

 类方法

class Methodsdemo:
    param_a = 0
    #定义类方法必须要加 classmethod装饰器
    @classmethod
    def class_method_demo(cls):
        """
        这是一个类方法,类方法的第一个参数必须为cls,以区别实例方法的self参数
        :return:
        """
        print('这是一个类方法',cls.param_a)
if __name__ == '__main__':
    Methodsdemo.class_method_demo()

 定义

  • 使用@classmethod装饰器,第一个参数为类本身,所以通常使用cls命名做区别
  •  在类内可以直接使用类方法或者类变量,无法直接使用实例变量或者方法

调用

  • 无需实例化,直接类.方法名调用,也可以通过实例.方法名调用

静态方法

定义:

  • 使用@staticmethod装饰器,没有和类有关的参数
  • 无法使用任何类方法,类变量或者实例方法,实例变量

调用:

  • 无需实例化,直接通过类.方法名调用,也可以通过实例.方法名调用
class Method_demo:
    param = 0
    @staticmethod
    def method_demo():
        print('这是一个静态方法')#无法调用类变量

if __name__ == '__main__':
    Method_demo.method_demo()

tips:

  • 注意使用@staticmethod
  • 注意该静态方法无法传入self、cls参数
  • 要想传入参数,要避免使用self、cls
class Method_demo:
    param = 0
    @staticmethod
    def method_demo(param1):
        print('这是一个静态方法',param1)#传入参数param1

if __name__ == '__main__':
    Method_demo.method_demo('hogwarts')

运行结果是:这是一个静态方法 hogwarts

总结

名称 定义 调用 关键字 使用场景
普通方法 至少需要一个参数self 实例名.方法名() 方法内部涉及到实例对象属性的操作
类方法 至少需要一个参数cls 类名.方法名()或者实例名.方法名() @classmethod 如果需要对类属性,及静态变量进行限制性操作时
静态方法 无默认参数 类名.方法名() @staticmethod 无需类或者实例参与

你可能感兴趣的:(测试开发学习,python)