Использование Python для написания класса для печати данных для каждого сотрудника

Я использую Python для написания класса «Сотрудник», чтобы иметь возможность печатать данные для каждого сотрудника на входе.

  • Мне нужно написать файл под названием «employee.py», который имеет класс «Сотрудник» и хранит следующие атрибуты: имя, идентификационный номер, отдел и должность.

  • напишите программу с именем сотрудник_test.py, которая создает три объекта сотрудников для хранения данных

  • Пример: Сьюзен Мейерс, 47889, бухгалтер, вице-президент.

Я попробовал приведенные ниже коды, но столкнулся с ошибкой модуля и проверил, установлен ли он. Я ожидал увидеть имена, напечатанные вместе с соответствующей информацией.

class Employee
def __init__(self, name, id_num, dep, title):
    self.__name = name
    self.__id = id_num
    self.__dep = dep
    self.__title = title

def set_id(self, id_num):
    self.__id = id_num

def set_dep(self, dep):
    self.__dep  = dep

def set_title(self, title):
    self.__title = title
def __str__(self):
    result = f"{self__name}/t{self.__id/t{self.__dep}/t{self.__title}"
    return result

from employee import Employee 

def main():
    Susan = Employee("Susan Meyers", "47899", "Accounting", "Vice President")
    Mark = Employee("Mark Jones", "39119", "IT", "Programmer")
    Joy = Employee("Joy Rogers", "81774", "Manufacturing", "Engineer")

    print(Susan)
    print(Mark)
    print(Joy)

main()
   

Traceback (most recent call last):
  File "C:/Users/19013/employee_test.py", line 1, in <module>
    from employee import Employee
ModuleNotFoundError: No module named 'employee'

Несвязанное примечание: просто назовите свои атрибуты без начала __ и избавьтесь от всех методов set_. Идиоматический Python не использует методы установки, если только стоимость настройки не чрезвычайно высока (когда необходимо, чтобы установка происходила программно, можно использовать @property, и доступ к нему будет осуществляться как к атрибуту, а не с использованием вызовов методов).

ShadowRanger 17.04.2024 00:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
98
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В вашей Traceback имя вашего файла — employee_test.py, но вы пытаетесь импортировать из employee. Ваш оператор импорта должен быть следующим:

from employee_test import Employee

Предположительно, у вас есть два файла: один с именем employee_test.py, а в другом находится оператор импорта и коды под ним.

Обратите внимание: если у вас все находится в одном файле employee_test.py, оператор импорта не нужен.

Также избавьтесь от ведущих подчеркиваний. Ваш employee_test.py должен выглядеть так:

class Employee:
    def __init__(self, name, id_num, dep, title):
        self.name = name
        self.id = id_num
        self.dep = dep
        self.title = title

    def set_id(self, id_num):
        self.id = id_num

    def set_dep(self, dep):
        self.dep  = dep

    def set_title(self, title):
        self.title = title
    def __str__(self):
        result = f"{self.name}\t{self.id}\t{self.dep}\t{self.title}"
        return result

и ваш другой файл должен выглядеть так:

from employee_test import Employee 

def main():
    Susan = Employee("Susan Meyers", "47899", "Accounting", "Vice President")
    Mark = Employee("Mark Jones", "39119", "IT", "Programmer")
    Joy = Employee("Joy Rogers", "81774", "Manufacturing", "Engineer")

    print(Susan)
    print(Mark)
    print(Joy)

main()

Вы имеете в виду, что employee_test должен импортировать себя?

mkrieger1 17.04.2024 00:23

Я думаю, что у ОП они есть в разных файлах, но все перепутал. Он даже включил обратную трассировку

16171413 17.04.2024 00:24

Я сильно подозреваю, что ОП, предназначенный для from employee import Employee, должен быть первой строкой отдельного файла с кодом над ним в отдельном файле (предположительно employee.py). Кажется, это вряд ли поможет.

ShadowRanger 17.04.2024 00:24
Ответ принят как подходящий

Во-первых:

Вы забыли ":" конец Employee класса.

Во-вторых: result неправильно. так и должно быть.

result = f"{self.__name}/t{self.__id}/t{self.__dep}/t{self.__title}"

В-третьих, проверьте, находятся ли ваши сотрудники.py и сотрудник_test.py в одном и том же месте. Я проверил, и это сработало.

Я проверил и исправил проблемы в вашем коде. Полный код и вывод такие:

работник.py будет таким.

class Employee:
    def __init__(self, name, id_num, dep, title):
        self.__name = name
        self.__id = id_num
        self.__dep = dep
        self.__title = title

    def set_id(self, id_num):
        self.__id = id_num

    def set_dep(self, dep):
        self.__dep  = dep

    def set_title(self, title):
        self.__title = title
    def __str__(self):
        result = f"{self.__name}\t{self.__id}\t{self.__dep}\t{self.__title}"
        return result

И это employee_test.py

from employee import Employee 

def main():
    Susan = Employee("Susan Meyers", "47899", "Accounting", "Vice President")
    Mark = Employee("Mark Jones", "39119", "IT", "Programmer")
    Joy = Employee("Joy Rogers", "81774", "Manufacturing", "Engineer")

    print(Susan)
    print(Mark)
    print(Joy)

main()

Этот вывод.

Susan Meyers    47899   Accounting      Vice President
Mark Jones      39119   IT      Programmer
Joy Rogers      81774   Manufacturing   Engineer

Другие вопросы по теме