python properties and inheritance

后端 未结 10 1468
粉色の甜心
粉色の甜心 2020-12-12 18:06

I have a base class with a property which (the get method) I want to overwrite in the subclass. My first thought was something like:

class Foo(object):
    d         


        
10条回答
  •  暖寄归人
    2020-12-12 18:39

    Same as @mr-b's but with decorator.

    class Foo(object):
        def _get_meow(self):
            return self._meow + ' from a Foo'
        def _set_meow(self, value):
            self._meow = value
        @property
        def meow(self):
            return self._get_meow()
        @meow.setter
        def meow(self, value):
            self._set_meow(value)
    

    This way, an override can be easily performed:

    class Bar(Foo):
        def _get_meow(self):
            return super(Bar, self)._get_meow() + ', altered by a Bar'
    

提交回复
热议问题