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