2014-12-01 7 views
0

Мне нужно отобразить результаты значений, которые были сохранены в списке. Список хранится в классе внутри класса, который безопасен в другом файле.функция вызова из другого файла python

В основном на другой файл, чтобы вернуть значения, я использовал следующий код:

... 
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) 

(значения также передаются в другой файл, который содержит класс и атрибуты в отношении работника)

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) 

Является ли это показывает:: Затем на главном файле, для того, чтобы вызвать функцию printEmployee, чтобы отобразить все данные, я это писал

<employee.Employee object at 0x02A2F6B0> 

Могу ли я помочь? Большое спасибо.

+0

Как-то ваш первый фрагмент кода выглядит не так. Он похож на класс, но определение класса отсутствует, а отступы не в порядке. Вы можете это исправить. –

+0

Извините, я скопировал и вставил неправильный код. Пожалуйста, проверьте сейчас :) –

+0

Код большой, поэтому я подумал, что вырезали некоторые фрагменты кода, которые не имеют отношения к этому вопросу. –

ответ

0

Посмотрите, как вы должны использовать printEmployee вместо этого вручную печати:

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

Он не работает: он отображает: 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: объект «Персонал» не имеет атрибута «_employee_list» >>> –

+0

Исправьте эту строку: 'для eachEmployee в self._employee_list:' on' для eachEmployee в self.employee_list: ' –

+0

Я изменил, но все еще не работал –

0
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. Это будет правильный подход в вашем случае.

Смежные вопросы