我用Python编写了一个小的继承问题:
class Worker:
def __init__(self,cod):
self.cod=cod
self.wage=0
class FactoryWorker(Worker):
def __init__(self,cod,wage):
Worker.__init__(self,cod,wage)
Worker.wage=wage*1.10
def printWage(self):
return Worker.wage
class OfficeWorker(Worker):
def __init__(self,cod,payperHour,numberHours):
Worker.__init__(self,cod)
self.payperHour=payperHour
self.numberHours=numberHours
def printWage(self):
Worker.wage=self.payperHour*self.numberHours
return Worker.wage
我遇到的问题是,当我制作两个对象时:
w1=FactoryWorker(2130,4000)
w1.printWage()
prints 4400
w2=OfficeWorker(1244,50,100)
w2.printWage()
prints 5000
但如果我再这样做:
w1.printWage()
它不打印原来的4400,而是打印5000
为什么?我希望可变工资被声明为类Worjer的一个属性,而不是在每个子类中单独声明。你知道吗
有什么帮助吗?你知道吗
你似乎知道应该通过
self
引用实例属性,因为你是用payperhour
等来引用的,所以我不知道你为什么不用wage
来引用实例属性。你知道吗(还要注意
super
的使用更为python和灵活,而不是显式调用超类。)您的问题是
Worker.wage
是类成员,这意味着该类的所有实例将共享相同的值。您只需要self.wage
,它是一个实例成员,这意味着类的每个实例都有自己的值。你知道吗相关问题 更多 >
编程相关推荐