如何在python中定义一个抽象类并强制实现变量

Moh*_*hit 4 python

所以,我试图定义一个带有几个变量的抽象基类,我想让它对任何"继承"这个基类的类都必须要有.所以,类似于:

class AbstractBaseClass(object):
   foo = NotImplemented
   bar = NotImplemented
Run Code Online (Sandbox Code Playgroud)

现在,

class ConcreteClass(AbstractBaseClass):
    # here I want the developer to force create the class variables foo and bar:
    def __init__(self...):
        self.foo = 'foo'
        self.bar = 'bar'
Run Code Online (Sandbox Code Playgroud)

这应该抛出错误:

class ConcreteClass(AbstractBaseClass):
    # here I want the developer to force create the class variables foo and bar:
    def __init__(self...):
        self.foo = 'foo'
        #error because bar is missing??
Run Code Online (Sandbox Code Playgroud)

我可能使用了错误的术语..但基本上,我希望每个"实现"上述类的开发人员强制定义这些变量?

sir*_*rfz 5

更新:abc.abstractproperty已在Python 3.3中弃用.使用property具有abc.abstractmethod代替如图所示这里.

import abc

class AbstractBaseClass(object):

    __metaclass__ = abc.ABCMeta

    @abc.abstractproperty
    def foo(self):
        pass

    @abc.abstractproperty
    def bar(self):
        pass

class ConcreteClass(AbstractBaseClass):

    def __init__(self, foo, bar):
        self._foo = foo
        self._bar = bar

    @property
    def foo(self):
        return self._foo

    @foo.setter
    def foo(self, value):
        self._foo = value

    @property
    def bar(self):
        return self._bar

    @bar.setter
    def bar(self, value):
        self._bar = value
Run Code Online (Sandbox Code Playgroud)