#----------------------
# 父類別, 職員
#----------------------
class Employee():
def __init__(self, no, name):
self.__no = no
self.__name = name
@property
def no(self):
return self.__no
@property
def name(self):
return self.__name
@no.setter
def no(self, no):
self.__no = no
@name.setter
def name(self, name):
self.__name = name
def info(self):
print(f'職員:{self.no}, {self.name}')
#----------------------
# 父類別, 自然人
#----------------------
class NaturalPerson():
def __init__(self, id, name):
self.__id = id
self.__name = name
@property
def id(self):
return self.__id
@property
def name(self):
return self.__name
@id.setter
def id(self, id):
self.__id = id
@name.setter
def name(self, name):
self.__name = name
def info(self):
print(f'自然人:{self.id}, {self.name}')
#----------------------
# 子類別, 一般職員
#----------------------
class RegularEmployee(Employee, NaturalPerson):
def __init__(self, no, id, name, overtimes):
Employee.__init__(self, no, name)
NaturalPerson.__init__(self, id, name)
self.__overtimes = overtimes
@property
def overtimes(self):
return self.__overtimes
@overtimes.setter
def overtimes(self, overtimes):
self.__overtimes = overtimes
#具體化計算薪水的方法
def salary(self):
return 50000 + self.overtimes*250
r = RegularEmployee('1001', 'A123456789', '王小明', 20)
print(r.no)
print(r.id)
print(r.name)
r.info()
print(r.salary())
請以以上的例子為基礎,再增加1個「海外職員」類別,名稱是「OverseasEmployee」。「海外職員」也繼承「職員」和「自然人」,它有1個建構元以設定「no」及「name」(呼叫Employee的建構元),也設定「id」及「name」(呼叫NaturalPerson的建構元),自己再設定「派外國家」。它也要完成salary()方法,用來計算薪水。計算的方法是「派至美國薪水80,000元,其他國家75,000元」。