вызов метода __str__ для вывода? - PullRequest
0 голосов
/ 02 августа 2020

Я пишу программу, в инструкциях которой указано: «Метод str не должен содержать никаких операторов печати и должен возвращать строку». Итак, я определил функцию (в классе Employee) следующим образом:

def __str__(self):
        return "\nThe employee's name is " + self.__employeeName + \
            "\nTotal regular hours worked: " + str(format(self.__regHours)) + \
            "\nTotal overtime hours worked: " + str(format(self.__otHours)) + \
            "\nTotal hours worked: " + str(format(self.__regHours + self.__otHours)) + \
            "\nEmployee's pay rate: $" + str(format(self.__hourlyPayRate, ".2f")) + \
            "\nMonthly regular pay: $" + str(format(self.getMonthlyRegPay(), ".2f")) + \
            "\nMonthly overtime pay: $" + str(format(self.getMonthlyOtPay(), ".2f")) + \
            "\nMonthly gross pay: $" + str(format(self.getGrossPay(), ".2f")) + \
            "\nMonthly taxes: $" + str(format(self.getTaxes(), ".2f")) + \
            "\nMonthly net pay: $" + str(format(self.getNetPay() - self.getTaxes(), ".2f"))

И я создал этот экземпляр класса Employee в отдельном файле:

employee = EmployeeClass_New.Employee()

        employee.setEmployeeName()
        employee.setHourlyPayRate()
        employee.setHoursWorked()

        employeeName = employee.getEmployeeName()
        hourlyPayRate = employee.getHourlyPayRate()
        regHours = employee.getRegHours()
        otHours = employee.getOtHours()

        regPay = employee.getMonthlyRegPay()
        otPay = employee.getMonthlyOtPay()
        grossPay = employee.getGrossPay()
        taxes = employee.getTaxes()
        netPay = employee.getNetPay()

        **print(f"{str(employee)}")**

        repeat = input("Type 'yes' to input another employee or 'no' to quit: ")

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

employee.__str__()

, но это ничего не дало ... мой вопрос: нарушаю ли я инструкции профессора, но делаю это? Есть ли способ вызвать str , чтобы он производил вывод? Все статьи, которые я читаю, рассчитаны на то, чтобы напечатать этот метод, но я хочу быть очень уверенным, поскольку мой профессор даст мне 0 за это задание, если я нарушу это правило.

Большое спасибо!

1 Ответ

1 голос
/ 02 августа 2020

Метод str не должен ...

Ограничение состоит в том, что сам метод не должен содержат print операторов. Вы выполнили это требование, вернув строку для некоторого другого фрагмента кода, чтобы использовать его по своему усмотрению.

Если вы не используете REPL, где выражения, отличные от None, печатаются автоматически. по волшебству вам определенно придется print строку вне метода, чтобы убедиться, что он работает. Это никоим образом не нарушает данные требования, поскольку это не в методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...