繁体   English   中英

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

[英]how to define an abstract class in python and force implement variables

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

class AbstractBaseClass(object):
   foo = NotImplemented
   bar = NotImplemented

现在,

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'

这应该抛出错误:

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??

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

更新abc.abstractproperty已在Python 3.3中弃用。 使用propertyabc.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
class AbstractBaseClass(object):
    def __init__(self):
        assert hasattr(self, 'foo')
        assert hasattr(self, 'bar')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM