我需要将文件中的数据发送到另一个文件中的类,然后将该数据复制到另一个包含类的文件中。
换句话说,我要求提供以下数据:
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
一般来说,我正在尝试将数据从文件传递到另一个文件,而另一个文件......但我不能。我正在挣扎!我可以帮忙吗?
答案 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
的概念是我要避免的概念。相反,请考虑您的程序结构:
在不同的文件中定义您的课程(或者如果它们相关且简短,您可以将它们放在同一个文件中)
编写一个单独的文件,该文件与您定义的类交互。这将是您的主程序,即接受输入,打印内容,保存数据
编写额外的模块来扩展您的计划,(例如,可能会每隔一个星期二的某个星期二给某人发送一份工作人员名单,但不会结束" 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。