class Human(object):
def __init__(self, sex, high):
self.sex = sex
self.high = high
class 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._job
class 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).
输出:
Python-类与对象-子类扩展父类属性
如果只想扩展其中的一个属性:
class Worker(Man):
@Man.do.getter
def do(self):
print('getting duty')
return super().do #super()相当于super(Worker. self)