假设我有下面的代码来描述一个容器。可以使用以下接口打开或关闭特定容器。
代码片段#1:
from abc import ABC, abstractmethod
class Container(ABC):
@abstractmethod
def Open(self):
...
@abstractmethod
def Close(self):
...
现在假设我想向界面添加新功能。具体来说 TimeToOpen 和 TimeToClose 函数:
代码片段#2:
from abc import ABC, abstractmethod
class Container(ABC):
@abstractmethod
def Open(self):
...
@abstractmethod
def TimeToOpen(self):
...
@abstractmethod
def Close(self):
...
@abstractmethod
def TimeToClose(self):
...
老实说,我不喜欢添加这些功能的方式。我更愿意创建一个类来打开和关闭将这些功能组合在一起。类似于下面的例子:
代码片段#3:
from abc import ABC, abstractmethod
class Open(ABC):
@abstractmethod
@staticmethod
def Execute(ContainerInstance): #Cannot type these correctly since container is defined later...
...
@abstractmethod
@staticmethod
def ExecutionTime(ContainerInstance):
...
class Close(ABC):
@abstractmethod
@staticmethod
def Execute(ContainerInstance):
...
@abstractmethod
@staticmethod
def ExecutionTime(ContainerInstance):
...
class Container:
Open = Open
Close = Close
首先,这不起作用(我认为),因为我需要将容器实例传递给 Open 和 Close 类,并在 Python 中维护键入信息。其次,我不知道这是否是一个好的做法。
任何人都可以提供有关如何更好地组织此活动的指导吗?或者代码片段 #2 是执行此操作的首选且正确的方法吗?
谢谢!