title: How to abstract a base class with a specified method?
body: <p>Say all subclass can get its own choice like <code>class.choice()</code></p>
  <pre><code>from enum import IntEnum
  
  class CompanyType(IntEnum):
      BySelf = 1
      Agency = 2
  
      @staticmethod
      def choice():
          return  [
          (i.value, i.name) for i in CompanyType
      ]
  
  
  class CompanyStatus(IntEnum):
      StartUp = 1
      LargeCompany = 2
  
      @staticmethod
      def choice():
          return [
              (i.value, i.name) for i in CompanyStatus
          ]
  ...
  
  </code></pre>
  <p>How can I abstract a base class that can be inherited with method <code>choice</code></p>
  <p>Expected as:</p>
  <pre><code>from enum import IntEnum
  
  class ChoiceBase_():
  
      @staticmethod
      def choice():
          return [
              (i.value, i.name) for i in specified_subclass
          ]
  
  
  class CompanyType(ChoiceBase_, IntEnum):
      BySelf = 1
      Agency = 2
  
  
  class CompanyStatus(ChoiceBase_, IntEnum):
      StartUp = 1
      LargeCompany = 2
  
  
  print(CompanyType.choice())
  print(CompanyStatus.choice())
  </code></pre>