python 中靜態方法的用途之一(我假設一般是面向物件的)是撰寫不需要訪問任何屬性的實用程式函式。我認為這更多是為了可讀性以及讓用戶直接使用類名而不是類的實體來使用它們。
您可能需要使用依賴于其他靜態方法的靜態方法來執行任務。在這種情況下,什么是好的做法?您是否必須將它們撰寫為實體方法并實體化類以讓每個方法都可以通過實體訪問其他方法?例子:
這不可能:
class AWSHandler:
@staticmethod
def do_a_job():
credentials = _get_credentials()
return _job_handler(credentials)
@staticmethod
def _get_credentials():
return credentials
@staticmethod
def _job_handler(credentials):
return result
這是可能的,但需要實體化一個物件:
class AWSHandler:
def do_a_job(self):
credentials = self._get_credentials()
return self._job_handler(credentials)
def _get_credentials(self):
return credentials
def _job_handler(self, credentials):
return result
uj5u.com熱心網友回復:
你需要的是一個類方法:
class AWSHandler:
@classmethod
def do_a_job(cls):
credentials = cls._get_credentials()
return cls._job_handler(credentials)
@classmethod
def _get_credentials(cls):
return credentials
@classmethod
def _job_handler(cls, credentials):
return result
然后你可以簡單地寫
AWSHandler.do_a_job()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337835.html
