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'}
    
  • 相关阅读:
    期末实训学习认识SSH
    Hibernate 的认识
    action和domain的不同总结
    学习使用action属性来接受参数
    实现action的统配
    struts2学习
    路径问题--笔记
    学习C层
    innovus add_ndr rule
    innovus clock tree instance ccl cdb cwb等 名字命名含义
  • 原文地址:https://www.cnblogs.com/Anesthesia-is/p/11503419.html
Copyright © 2011-2022 走看看