python 中相互依赖的静态方法

Inter-dependent staticmethod's in python

静态方法在 python 中的用途之一(我假设通常是 OOP)是编写实际上不需要访问任何属性的实用程序函数。我认为它更多的是为了可读性以及让用户直接使用 class 名称而不是 class.

的实例

您可能需要使用依赖于其他静态方法的静态方法执行任务。在这种情况下,什么是好的做法?是不是一定要写成实例方法,然后实例化class,让每个方法都可以通过实例访问其他方法?示例:

这是不可能的:


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

你需要的是 classmethod:

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()