python类和值

2024-09-30 01:30:35 发布

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

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

换言之,我要求提供以下数据:

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

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

^{pr2}$

最后,我需要将这些数据复制到另一个名为雇员.py(正如您在代码中看到的,我正在呼叫另一个文件中的类员工。在雇员.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

一般来说,我试图将数据从一个文件传递到另一个文件,然后另一个。。但我不能。我在挣扎!我能帮个忙吗?在


Tags: 文件数据代码namepyselfnumberinput
3条回答

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

  • 在不同的文件中定义你的类(或者如果它们是相关的并且很短,你可以把它们放在同一个文件中)

  • 编写一个单独的文件,用您定义的类与用户交互。这将是您的主程序,即获取输入,打印资料,保存数据

    • 保存数据:您可以将用户输入保存到一个文件中,并在每次启动程序时加载它。也许这就是你所说的“发送数据…”?这可能是用数据库实现的最好方法,您可以看看sqlite,它是python附带的一个数据库,它非常简单和强大。您还可以将数据保存在文本文件中(如果您不熟悉sql,这可能更容易)
  • 编写额外的模块来扩展你的课程(例如,可能每个月的第二个星期二给某人发一份员工名单,而不是“ry”)

目前,您有两个文件(您已与我们共享),员工.py&安培;雇员.py存储有关两类员工和员工的信息。到目前为止还不错。在

下一步:

  • Staff类的addEmployee方法在构造函数中定义employee对象的setYearsWorked和setSalary方法时调用它们。这些似乎不需要。设置假日的方法在这里似乎也是多余的。

  • 你呢员工.py文件应该导入employee模块(确保在员工.py在

    导入员工

示例员工.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)

示例雇员.py公司名称:

^{pr2}$
  • 然后你需要创建主.py“文件,它可以完成以下部分/所有操作(技术上,您可以在员工.py或者雇员.py同样,但将此逻辑分离到新文件中更为简洁):

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

我为这个项目创建了一个github repository,因此您可以查看我的简单示例是如何工作的。要测试它,可以将其克隆到目录中,然后运行以下命令(注意,该示例在python2.x上不起作用):

python3 main.py

最后,关于代码样式的注释。python社区对代码质量和格式化有非常严格的指导方针。这是因为代码可读性是python语言的一个非常重要的方面。共同体标准编入pep-8。请看一下:)。这就是为什么在我的示例代码中,我将一些变量名从camelCase切换到under\u scored。在

就像在员工.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的最后一行拼错了变量,应该是:

^{pr2}$

而且,您的雇员构造函数收到的是YearsWorked,Salary,但不使用它们,而且python中变量名通常是小写的。在

你的员工.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)

你的雇员.py看起来像这样。在

^{pr2}$

跑员工.py在

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

相关问题 更多 >

    热门问题