假设我有两个课程Employee
和Student
:
class Employee():
def __init__(self, id):
self.id = id # the employee id
...methods omitted...
class Student():
def __init__(self, id):
self.id = id # the student id, different from employee id
...methods omitted...
现在,我想创建一个仅合并StudentEmployee
和Employee
的第三课Student
。
但是,目标是两个id
仍保留在每个继承的类中。
有些事情是这样的:
class StudentEmployee(Employee, Student):
def __init__(self, employee_id, student_id):
Employee.__init__(self, employee_id)
Student.__init__(self, student_id) # overrides employee id
请注意,Student
和Employee
都具有id
属性,因此实际上会覆盖另一个属性。
问题:
如果两个id
具有不同的含义,我如何保留它们?
例如,是否有某种方法可以保护一个班级的id
不会被另一个班级覆盖。
一种自然的方法是将类定义更改为:
class Employee():
def __init__(self, id):
self.eid = id # now "id" changes to "eid"
...attributes names in methods updated as well
class Student():
def __init__(self, id):
self.sid = id # now "id" changes to "sid"
...attributes names in methods updated as well
但是,我不太喜欢这种方法,因为eid
不像sid
那样整洁。
此外,上述示例可能过于简单。
让我们想象两个班级正在被合并"拥有许多共享属性名称,代码重构工作不会很小。
还有其他更好的方法吗?