【发布时间】:2021-04-16 18:23:29
【问题描述】:
我有两个班级,一个家长叫Organization,一个孩子叫Employee。 Organization 有一个名为 org_size 的属性,当我调用属于 Employee 类的 add_employee 方法时,我希望能够增加该属性。
class Organization( object ):
def __init__(self, org_name):
self.org_name = org_name
self.org_size = 0
self.org_revenue = 0
self.num_placements = 0
def get_org_size(self):
return self.org_size
class Employee( Organization ):
def __init__(self, employee_name, comission_rate):
self.employee_name = employee_name
self.comission_rate = comission_rate
self.total_comission = 0
def add_employee(employee_name, comission_rate):
employee = Employee(employee_name, comission_rate)
self.org_size += 1
return employee
team = Organization("My Sales Team")
emp = Employee("Bob", 15)
无论我调用team.org_size 或team.get_org_size(),我都会得到0,而不是预期的1,因为我想增加org_size 作为调用add_employee() 方法的一部分。我尝试将 super() 添加到 Employee,但是每当我调用 add_employee 时,它都会导致需要来自 Organization 的 org_name 参数的问题。
我需要对Employee 类做什么才能修改Organization 中的属性?
【问题讨论】:
-
这种继承结构没有意义。
class Employee( Organization ):说员工是一种组织。 -
如果我更改顺序并尝试让
Organization继承Employee也无济于事 -
当您大声描述 OO 设计时,它应该是有意义的。说这些是否有意义:员工是一个组织。一个组织是一个雇员。并不真地。这表明您可能应该使用 has-a 关系而不是 is-a 关系。
标签: python class inheritance