通过注解调用方法

Call method by annotation

给出下面的代码

class Test:
  def method(self, name):
    if name == 'a':
      return __method_a()
    if name == 'b':
      return __method_b()

  def __method_a(self):
    print('a')

  def __method_b(self):
    print('b')
  ...

有没有办法做一些“更好”的事情,例如使用注释?

class Test:
  def method(self, name: str):
    return self.call_by_annot(name)

  @a
  def __method_a(self):
    print('a')

  @b
  def __method_b(self):
    print('b')
  ...

如果没有,这是删除此类 if 列表的好方法?

你可以这样做:

class Test:

    def method(self,name):
        return getattr(self,f"__method_{name}")()

    def __method_a():...
    def __method_b():...