python类和值

时间:2014-11-30 19:01:45

标签: python list class types

我需要将文件中的数据发送到另一个文件中的类,然后将该数据复制到另一个包含类的文件中。

换句话说,我要求提供以下数据:

name = input("Name")
number = input("Number")
years = input("Years Worked")
salary = input("salary")
new = Staff.addEmployee(name,number,years,salary)

基本上,我想将该数据发送到另一个名为staff.py的文件中的类中的函数。然后,发送到staff.py的数据需要附加到初始化类时创建的列表中。为此,我创建了代码:

class Staff:

    def __init__(self):
        self.EmployeeList = []

    def addEmployee(self, name, number, YearsWorked, Salary):
        addemployee = employee.Employee(name, number,YearsWorked, Salary)
        addemployee.setYearsWorked(YearsWorked)
        addemployee.setSalary(Salary)
        addemployee.setHolidayEntitlement()
        self.employeeList.append(addemployee)

总而言之,我需要将该数据复制到另一个名为employee.py的文件中(正如您在代码中看到的那样,我正在调用另一个文件中的Employee类。在employee.py中,我只写了以下代码:

class Employee:

    def __init__(self, name , number , YearsWorked, Salary):
        self._Name = Name
        self._StaffNr = StaffNr
        self._YearsWorked = 0
        self._Salary = 0
        self._HolidayEntitlement = 0

一般来说,我正在尝试将数据从文件传递到另一个文件,而另一个文件......但我不能。我正在挣扎!我可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

就像staff.py中的employee.Employee(...一样,您需要初始化Staff个对象。在巡回主文件中。此外,如果要填充列表,则需要某种循环。所以它应该看起来像:

from staff import Staff
mystaff = Staff()
for _ in range(100): #for 100 employees, can replace with while with a stop condition
    name = input("Name")
    number = input("Number")
    years = input("Years Worked")
    salary = input("salary")
    mystaff.addEmployee(name,number,years,salary)

另请注意,您在addEmployee的最后一行拼错了变量,应该是:

self.EmployeeList.append(addemployee)

并且,您的Employee构造函数接收了YearsWorked,Salary但不使用它们,并且变量名称通常在python中较低。

答案 1 :(得分:0)

您的staff.py

from employee import Employee

class Staff:

    def __init__(self):
        self.EmployeeList = []

    def addEmployee(self, name, number, YearsWorked, Salary):
        employee_obj = Employee(name, number, YearsWorked, Salary)
        employee_obj.print_employee_details()
        self.EmployeeList.append(employee_obj)

name = input("Name")
number = input("Number")
years = input("Years Worked")
salary = input("salary")
staff_obj = Staff()
new = staff_obj.addEmployee(name,number,years,salary)

你的employee.py看起来像这样。

class Employee:

    def __init__(self, name , number , YearsWorked, Salary):
        self._Name = name
        self._StaffNr = number
        self._YearsWorked = YearsWorked
        self._Salary = Salary
        self._HolidayEntitlement = 0

    def print_employee_details(self):
        print ("Employee Name is {} working since past {} having salary {}").format(self._Name, self._YearsWorked, self._Salary)

运行staff.py

Name: Ana
Number: 001
Years Worked: 3
salary:30000
Employee Name is  Ana working since past 3 years having salary 30000

答案 2 :(得分:0)

sending data to another file的概念是我要避免的概念。相反,请考虑您的程序结构:

  • 在不同的文件中定义您的课程(或者如果它们相关且简短,您可以将它们放在同一个文件中)

  • 编写一个单独的文件,该文件与您定义的类交互。这将是您的主程序,即接受输入,打印内容,保存数据

    • 保存数据:您可以将用户输入保存在文件中,并在每次启动程序时加载它。也许这就是你发送数据的意思......"?这可能是使用数据库最好的实现,你可以查看sqlite,这是一个python附带的数据库,它非常简单和强大。您还可以将数据保存在文本文件中(如果您不熟悉sql,这可能会更容易)
  • 编写额外的模块来扩展您的计划,(例如,可能会每隔一个星期二的某个星期二给某人发送一份工作人员名单,但不会结束" ry")

    < / LI>

目前,您有两个文件(您已与我们分享),staff.py&amp; employee.py,用于存储有关两个班级的信息。雇员。到目前为止,这太棒了。

后续步骤:

  • 你的职员班&#39; addEmployee方法调用employee对象的setYearsWorked&amp; setSalary方法在构造函数中定义时。这些似乎并不需要。设置假期的方法在这里似乎也是多余的。

  • 你staff.py文件应该导入员工模块(确保在staff.py的开头有以下几行

    导入员工

示例staff.py:

# staff.py
import employee


class Staff(object):

    def __init__(self):
        self.employee_list = []

    def add_employee(self,
                     name,
                     number,
                     years_worked,
                     salary):

        new_emp = employee.Employee(name,
                                    number,
                                    years_worked,
                                    salary)
        self.employee_list.append(new_emp)

示例employee.py:

#employee.py
class Employee(object):

    def __init__(self, name, number, years_worked, salary):
        self._name = name
        self._number = number
        self._years_worked = years_worked
        self._salary = salary
        self._holiday_entitlement = 0
  • 然后你需要创建&#34; main.py&#34;文件,它可以执行以下部分/全部操作(从技术上讲,您也可以在staff.py或employee.py中执行此操作,但在新文件中分离此逻辑更清晰):

    • 要求用户输入以创建新员工
    • 也许:打印所有员工
    • 也许:打印特定员工的详细信息
    • 也许:允许用户更新员工的详细信息
    • 可能:将员工信息存储在文件或数据库中(高级用法)
    • 可能:从文件或数据库加载员工信息(高级用法)

我为这个项目创建了一个github repository,所以你可以看看我的简单例子是如何工作的。要测试它,你可以克隆它,cd进入目录,然后运行以下(注意,这个例子不会在python2.x上运行):

python3 main.py

最后,关于代码风格的说明。 python社区对代码质量和指令有非常严格的指导。格式。这是因为代码可读性是python语言的一个非常重要的方面。社区标准编入pep-8。请看一看 :)。这就是为什么在我的示例代码中我将一些变量名从camelCase切换到under_scored。