Fork me on GitHub

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'}
posted @ 2019-09-10 22:11  Anesthesias  阅读(345)  评论(0编辑  收藏  举报