【问题标题】:call function from other file python从其他文件python调用函数
【发布时间】:2014-12-01 11:31:59
【问题描述】:

我需要显示已存储到列表中的值的结果。该列表存储在一个类中的一个类中,它在另一个文件中是安全的。

基本上在另一个文件上返回值,我使用了以下代码:

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

def addEmployee(self, name, number, years_worked,salary):
    newEmployee = employee.Employee(name,number,years_worked,salary)
    self.employee_list.append(newEmployee)

def printEmployee(self):
    for eachEmployee in self._employee_list:
        print("Name",name)
        print("Number",number)
        print("Years Worked", years_worked)
        print("Salary:", salary)

(这些值也会发送到另一个文件,其中包含有关员工的类和属性)

然后,在主文件上,为了调用函数 printEmployee 来显示所有数据,我这样写:

from staff import Staff
mystaff = Staff()
print("Welcome to my Staff Management Program")
print(choices)

elif choice == "D":
    for emp in mystaff.employee_list:
        print(emp)

是这样显示的:

<employee.Employee object at 0x02A2F6B0>

我可以帮忙吗? 非常感谢。

【问题讨论】:

  • 不知何故您的第一段代码看起来不正确。它看起来像一个类,但缺少类定义并且缩进不正确。你能解决这个问题吗?
  • 对不起,我复制并粘贴了错误的代码。请立即检查:)
  • 代码很大,所以我想删掉一些与这个问题无关的代码。
  • @Ana 请查看答案,如果没有帮助,我可以修改它。

标签: python function class object attributes


【解决方案1】:

看起来你应该使用printEmployee 而不是手动打印:

...
elif choice == "D":
    mystaff.printEmployee()

【讨论】:

  • 它不起作用,它显示: Traceback(最近一次调用最后一次):文件“C:\Users\SOFIA\Desktop\New folder\main.py”,第 35 行,在 mystaff.printEmployee() 文件“C:\Users\SOFIA\Desktop\New folder\staff.py”,第 21 行,printEmployee 中 self._employee_list 中的每个员工:AttributeError: 'Staff' 对象没有属性 '_employee_list' > >>
  • 修复此行:for eachEmployee in self._employee_list: on for eachEmployee in self.employee_list:
【解决方案2】:
class Employee:  
    def __init__(self):
        self.employee_list = []

    def addEmployee(self, name, number, years_worked,salary):
        newEmployee = [name,number,years_worked,salary]
        self.employee_list.append(newEmployee)

    def printEmployee(self):
        for eachEmployee in self._employee_list:
            print("Name",name)
            print("Number",number)
            print("Years Worked", years_worked)
            print("Salary:", salary)

emp_obj = Employee()
emp_obj.addEmployee('Monty', '007', '13', '50000')
emp_obj.addEmployee('Max', '008', '3', '30000')
emp_obj.addEmployee('Ana', '009', '7', '70000')


from m1 import Staff
mystaff = Staff()
print("Welcome to my Staff Management Program")
choice = raw_input("Enter your choice:")

if choice == "D":
    mystaff.employee_list = emp_obj.employee_list
    for emp in mystaff.employee_list:
        print("Employee Name: {}, Number: {}, Years worked: {}, Salary: {}").format(emp[0],emp[1],emp[2],emp[3],)

结果:

Welcome to my Staff Management Program
Enter your choice:D
Employee Name: Monty, Number: 007, Years worked: 13, Salary: 50000
Employee Name: Max, Number: 008, Years worked: 3, Salary: 30000
Employee Name: Ana, Number: 009, Years worked: 7, Salary: 70000

您应该尝试通过inheritance 实现这一目标。在您的情况下,这将是正确的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多