Python中的類方法與靜態方法
Python中的類方法是一種繫結到類而不是類物件的方法。靜態方法也類似,但它們之間存在一些基本差異。對於類方法,我們需要指定`@classmethod`裝飾器;對於靜態方法,則使用`@staticmethod`裝飾器。
類方法語法。
class my_class:
@classmethod
deffunction_name(cls, arguments):
#Function Body
return value
靜態方法語法。
class my_class:
@staticmethod
deffunction_name(arguments):
#Function Body
return value
類方法和靜態方法之間有什麼區別?
| 類方法 | 靜態方法 |
|---|---|
| 類方法以`cls`(類)作為第一個引數。 | 靜態方法不接受任何特定引數。 |
| 類方法可以訪問和修改類狀態。 | 靜態方法不能訪問或修改類狀態。 |
| 類方法將類作為引數來了解該類的狀態。 | 靜態方法不知道類狀態。這些方法用於透過一些引數執行一些實用程式任務。 |
| 此處使用`@classmethod`裝飾器。 | 此處使用`@staticmethod`裝飾器。 |
靜態方法用於執行一些實用程式任務,而類方法用於工廠方法。工廠方法可以為不同的用例返回類物件。
示例程式碼
from datetime import date as dt
class Employee:
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
defisAdult(age):
if age > 18:
return True
else:
return False
@classmethod
defemp_from_year(emp_class, name, year):
return emp_class(name, dt.today().year - year)
def __str__(self):
return 'Employee Name: {} and Age: {}'.format(self.name, self.age)
e1 = Employee('Dhiman', 25)
print(e1)
e2 = Employee.emp_from_year('Subhas', 1987)
print(e2)
print(Employee.isAdult(25))
print(Employee.isAdult(16))
輸出
Employee Name: Dhiman and Age: 25 Employee Name: Subhas and Age: 31 True False
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP