如何在 Python 的类中正确地将类似的函数分组在一起

问题描述 投票:0回答:0

假设我有下面的代码来描述一个容器。可以使用以下接口打开或关闭特定容器。

代码片段#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 是执行此操作的首选且正确的方法吗?

谢谢!

python class interface
© www.soinside.com 2019 - 2024. All rights reserved.