天天看點

python(property,staticmethod,classmethod)3個内置裝飾器介紹使用

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': 'zz'}