[英]Modifying parent class attribute from child class method
我有两个班级,一个叫做Organization
的父母和一个叫做Employee
的孩子。 Organization
有一个名为org_size
的属性,当我调用属于Employee
class 的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()
方法的一部分。 我尝试向Employee
添加一个 super() ,但是每当我调用add_employee
时,它都会导致需要来自Organization
的org_name
参数的问题。
为了修改Organization
中的属性,我需要对Employee
class 做什么?
组织和员工之间的关系是“HAS A”关系,而不是“IS A”关系。 员工不是组织的一种,她是组织的成员。
class Organization():
def __init__(self, org_name):
self.org_name = org_name
self.org_size = 0
self.org_revenue = 0
self.num_placements = 0
self.employees = []
def add_employee(self, employee_name, comission_rate):
employee = Employee(employee_name, comission_rate)
self.employees.append(employee)
return employee
def get_org_size(self):
return len(self.employees)
class Employee():
def __init__(self, employee_name, comission_rate):
self.employee_name = employee_name
self.comission_rate = comission_rate
self.total_comission = 0
team = Organization("My Sales Team")
bob = team.add_employee("Bob", 15)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.