Quantcast
Channel: How to create abstract properties in python abstract classes? - Stack Overflow
Viewing all articles
Browse latest Browse all 8

How to create abstract properties in python abstract classes?

$
0
0

In the following code, I create a base abstract class Base. I want all the classes that inherit from Base to provide the name property, so I made this property an @abstractmethod.

Then I created a subclass of Base, called Base_1, which is meant to supply some functionality, but still remain abstract. There is no name property in Base_1, but nevertheless python instatinates an object of that class without an error. How does one create abstract properties?

from abc import ABCMeta, abstractmethodclass Base(object):# class Base(metaclass = ABCMeta): <- Python 3    __metaclass__ = ABCMeta    def __init__(self, str_dir_config):        self.str_dir_config = str_dir_config    @abstractmethod    def _do_stuff(self, signals):        pass    @property        @abstractmethod    def name(self):"""This property will be supplied by the inheriting classes        individually."""        passclass Base1(Base):    __metaclass__ = ABCMeta"""This class does not provide the name property and should    raise an error."""    def __init__(self, str_dir_config):        super(Base1, self).__init__(str_dir_config)        # super().__init__(str_dir_config) <- Python 3    def _do_stuff(self, signals):        print "Base_1 does stuff"        # print("Base_1 does stuff") <- Python 3class C(Base1):    @property    def name(self):        return "class C"if __name__ == "__main__":    b1 = Base1("abc")

Viewing all articles
Browse latest Browse all 8

Latest Images

Trending Articles





Latest Images