Python抽象类的最佳实践

2024-03-29 13:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个代码库中遇到了以下代码:

class Worker(object):
    state_names = {}
    def __init__(self, status_value):
        self.status_value = status_value
    @property
    def state(self):
        return self.status_value.value
    @state.setter
    def state(self, status):
        self.ui.debug('state: {} -> {}'
                      ''.format(self.state_name(), self.state_name(status)))
        self.status_value.value = status
    def state_name(self, s=None):
        return self.state_names[s or self.state]

它有一些明显的问题:

  1. self.state_names为只读且为空
  2. self.ui不存在

在四处寻找了一段时间之后,我意识到有一个类是从这个类派生出来的,已知它有self.ui并提供了self.state_names。你知道吗

我认为以这种方式实现抽象类有点奇怪,其中虚成员函数的实现假定派生类中的数据成员。你知道吗

在python中有没有更好、更干净的方法来实现这种开发模式?我假设AbstractBaseClass是一个起点。你知道吗


Tags: 代码nameselfuireturnobjectnamesinit