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