带有故障保险柜的构建器模式如何在Python中使用?

时间:2018-08-01 23:02:46

标签: python python-3.x design-patterns builder

我试图用一些故障保险柜在Python中实现构建器模式。这种故障保险柜通常将在OOP中使用接口来实现,并且会限制用户先使用某些方法,甚至根本禁止使用某些方法,除非可以使用此方法来操纵当前对象。 这样的故障保险柜如何在Python中实现?

1 个答案:

答案 0 :(得分:1)

Python Abstract Base Class module (ABC)允许此类限制。使用Python 3:

from abc import ABC, abstractmethod


class AbstractFoo(ABC):

    @abstractmethod
    def foo(self):
        pass

class ConcreteFoo(AbstractFoo):
    pass

if __name__ == "__main__":
    c = ConcreteFoo()     

执行此脚本将导致以下错误:

TypeError: Can't instantiate abstract class ConcreteFoo with abstract methods foo

可以通过提供foo方法的实现来解决此错误:

from abc import ABC, abstractmethod


class AbstractFoo(ABC):

    @abstractmethod
    def foo(self):
        pass

class ConcreteFoo(AbstractFoo):

    def foo(self):
        print('Made it to foo')

if __name__ == "__main__":
    c = ConcreteFoo()
    c.foo()    

执行此脚本会导致以下结果:

Made it to foo