这是在Python中构建“超级结构”类的正确方法吗?

2024-05-13 20:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图构建一个类,我可以用它来实例化新的工作项目。我们的想法是,每个项目都需要来自不同部门的资源,如果需要的话,我需要能够在项目对象中实施。每个部门都应该能够访问项目级的属性和方法,项目对象也应该能够访问各个部门的属性(即对部门成本求和以返回项目总成本)

以下是我正在尝试的一些伪代码,希望您能提供正确方法的指导:

定义项目

class Project:
    totalCost=0

    def addDepartment(Dept):
        totalCost+=name.DepartmentCost
        Departments=append(Dept)

定义部门

class Department1:
    def __init__(self,Name, NumStaff, AverageStaffSalary)
    Name=None
    NumStaff=None
    AverageStaffSalary=None
    DepartmentCost=AverageStaffSalary*NumStaff
    Department1_SpecificParm=1


class DepartmentN:
    def __init__(self,Name, NumStaff, AverageStaffSalary)
    Name=None
    NumStaff=None
    AverageStaffSalary=None
    DepartmentCost=AverageStaffSalary*NumStaff
    DepartmentN_SpecificParm="A"

实例化项目和其中的嵌套部门

p1=Project("myProject")
p1.addDepartment(Department1(Name="myFirstDepartment", NumStaff=9, AverageStaffSalary=1000))
print p1.myFirstDepartment.DepartmentCost        #Print 9000

p1.addDepartment(DepartmentN(Name="myNthDepartment", NumStaff=2, AverageStaffSalary=6000))
print p1.myNthDepartment.DepartmentCost        #Print 12000

返回所有部门的总成本

p1.TotalCost          #Print 21000  

Tags: 项目实例namenonedefclass部门print
1条回答
网友
1楼 · 发布于 2024-05-13 20:11:59

(在评论中提供发布答案)

你的代码没有太大意义(即使对于psudo代码),但我认为这可能与你正在寻找的东西是一致的Repl.it playground

class Project:
  total = 0
  deps = []

  def addDep(self, dep):
    self.total += dep.cost
    self.deps.append(dep)

class Department:
  def __init__(self, ppl, salary):
    self.cost = ppl * salary

p = Project()
p.addDep(Department(10, 200))
p.addDep(Department(1, 3000))

print(p.total)

相关问题 更多 >