zoukankan      html  css  js  c++  java
  • python中面向对象之装饰器

    python面向对象内置装饰器property,staticmethod,classmethod的使用

    @property 装饰器作用及使用
    • 作用:面向对象中的方法伪装成属性
    • 使用如下:
    class Circle:
          def __init__(self,r):
            self.r = r
          @property
          def area(self):
            return 3.14*self.r**2
          @property
          def perimeter(self):
            return 2*3.14*self.r
    C = Circle(10)
    print(C.area)  #区别:print(C.area())
    print(C.perimeter) #区别:print(C.perimeter())
    
    @staticmethod 装饰器作用及使用
    • 作用:声明一个方法是一个静态方法,不必传任何默认的参数
    • 使用如下:
    class Student:
        def __init__(self,name):
          self.name = name
        @staticmethod
        def login():      # def log(self):print("登录程序")
          print("登录程序")
    Student.login()
    
    @classmethod 装饰器的作用及使用
    • 作用:表示所被装饰的方法为类对象实例,类方法有类变量cls传入,从而可以用cls做一些相关的处理,调用该类方法时,传入的类变量cls是子类,而非父类
    • 使用如下:
    class Manager:
        def __init__(self,name):
            self.name = name
        @classmethod     # 装饰当前这个方法为一个类方法,默认传参数cls,表示当前所在的类名
        def login(cls):
            username = input('>>>')
            stu = cls(username)
            return stu
    obj = Manager.login()  # 用类名可以直接调用这个方法了
    print(obj.__dict__)
    >>> zz  # 输入名字
    打印结果:{'name': 'alex'}
    
  • 相关阅读:
    iFrmae_HTML
    表单_HTML
    使用 docker-compose 运行 MySQL
    【消息中间件是啥哟?】
    vue项目打包经验
    【css之flex布局】a guide to flexbox
    vue表格数据查询
    模块化导出导入的几种方式
    快速搭建一个本地服务node
    小程序性能优化
  • 原文地址:https://www.cnblogs.com/Anesthesia-is/p/11503419.html
Copyright © 2011-2022 走看看