Nano Hash - криптовалюты, майнинг, программирование

Я получаю ошибку типа Traceback. Employee() не принимает аргументов при попытке создать метод класса для анализа строки и создания объекта в python.

Я получаю ошибку типа Traceback. Employee() не принимает аргументов при попытке создать метод класса для анализа строки и создания объекта в python.

  class Employee(object):
    @classmethod
    def from_string(cls, emp_str):
        first_name, last_name, pay = emp_str.split('-')
        return cls(first_name, last_name, pay)**

    emp_str_1 = 'Larry-David-100000'
    new_emp_1 = Employee.from_string(emp_str_1)
    print(new_emp_1.first_name, new_emp_1.last_name, new_emp_1.pay)

Traceback (most recent call last):
  File "C:\class_method.py", line 14, in <module>
    new_emp_1 = Employee.from_string(emp_str_1)
  File "C:\class_method.py", line 8, in from_string
    return cls(first_name, last_name, pay)
TypeError: Employee() takes no arguments

  • Вы не определили метод __init__() для класса, поэтому он использует инициализацию по умолчанию, которая не принимает никаких параметров. 02.12.2020
  • Отвечает ли это на ваш вопрос? TypeError: Car() не принимает аргументов 02.12.2020
  • Я думал, что init нужен только методам экземпляра, а для методов класса это не требуется. 02.12.2020
  • Ваш cls(first_name, last_name, pay) вызовет класс __init__, потому что он будет создавать экземпляр объекта, как и Employee(first_name, last_name, pay). Таким образом, вам все еще нужна функция __init__, которая принимает эти параметры. 02.12.2020
  • Если ваш метод класса не создает экземпляр объекта Employee, то yes __init__ не требуется. 02.12.2020
  • Как я могу запустить метод @classmethod без создания экземпляра объекта Employee? Потому что я продолжаю получать ошибку TypeError Employee() без аргументов. 02.12.2020
  • Проблема не в самом методе класса; это потому, что метод класса вызывает cls(first_name, last_name, pay). Что вы ожидаете от этого? В вашем классе Employee, где вы ожидаете, что будут обрабатываться first_name, last_name, pay? 02.12.2020
  • Я пытаюсь реализовать метод @classmethod, чтобы сначала проанализировать строку, а затем в качестве альтернативного конструктора для метода init. Я читал, что метод класса также можно использовать в качестве альтернативного конструктора для обычного метода экземпляра. 02.12.2020
  • Я не знаю, что вы читали, но может отсутствовать какая-то информация или примеры. Класс должен вызвать __init__ для создания экземпляра класса. И ваш вариант использования здесь — создание экземпляра класса с помощью cls(...). Где еще предполагается хранить .first_name и .last_name для каждого объекта Employee. Использование @classmethod для создания объекта полезно для фабричных шаблонов проектирования, подобных этому stackoverflow.com/a/682545/2745495. 02.12.2020
  • Я предлагаю перечитать разницу между методами экземпляра и класса, переменными экземпляра и класса, а также тем, как классы и экземпляры создаются и используются в Python. 02.12.2020

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..