Python-类与对象-子类扩展父类属性

来源:互联网 发布:淘宝买家信誉快速 编辑:程序博客网 时间:2024/06/06 02:02
class Human(object):    def __init__(self, sex, high):        self.sex = sex        self.high = highclass Man(human):    var = 133    def __init__(self, sex, high, job):        super().__init__(sex, high)        self._job = job    @property    def do(self):        print('he dose %s' % self._job)    @do.setter    def do(self, newjob):        self._job = newjob    @do.deleter    def do(self):        del self._jobclass Worker(Man):    def __init__(self, sex, high, job, name):        super().__init__(sex, high, job)        self.name = name    @property    def do(self):        super().do    @do.setter    def do(self, duty):        print('reset the duty for %s' % self.name)        super(Worker, Worker).do.__set__(self, duty)    @do.deleter    def do(self):        print('delete duty for %s' % self.name)        super(Worker, Worker).do.__delete__(self)

需要注意Worker类下面的super方法调用父类的__set__()以及__delete__()方法,其调用方法super(Worker, Worker).

输出:

如果只想扩展其中的一个属性:

class Worker(Man):    @Man.do.getter    def do(self):        print('getting duty')        return super().do #super()相当于super(Worker. self)