Объект не имеет атрибута - Имя переменной, совместно используемой классами

1

Мне нужно назначить новую учетную запись SalesRep а также обновить мой класс Account чтобы иметь Лесли в качестве продавца.

Я получаю ошибку:

'str' object has no attribute 'set_sales_rep'

Когда я тестирую следующие строки:

rep_1 = SalesRep('Leslie', 'Knope', ['acct1', 'acct2', 'acct3'])
print(rep_1.add_account('acct4'))

Класс SalesRep:

class SalesRep(object):

    def __init__(self, first_name, last_name, accounts=None):
        self.first_name = first_name
        self.last_name = last_name
        self._accounts = []

        if accounts:
            self._accounts.extend(accounts)

    def __str__(self):
        return "{self.first_name} {self.last_name}".format(self=self)

    def get_accounts(self):
        return self._accounts

    def add_account(self, account):
        self._accounts.append(account)
        account.set_sales_rep(self)

Класс Account:

class Account(object):

    def __init__(self, name, sales_rep=None, segments=None):
        self.name = name
        self._sales_rep = sales_rep
        self._segments = []

        if segments:
            self._segments.extend(segments)

    def __str__(self):
        return "{self.name}".format(self=self)

    def get_sales_rep(self):
        return self._sales_rep

    def set_sales_rep(self, sales_rep):
        self._sales_rep = sales_rep

Все, что я пытаюсь сделать, это проверить, что add_account в классе SalesRep работает, у меня есть "set_sales_rep", определенный в классе Account. Я не уверен, что ошибка в том, что я неправильно связываю "set_sales_rep" между классами или вызов функции print() наверху неправильно.

Теги:
class
object
python-3.x
attributes

1 ответ

1
Лучший ответ
rep_1 = SalesRep('Leslie', 'Knope', ['acct1', 'acct2', 'acct3'])
print(rep_1.add_account('acct4'))

Вы передаете строку вместо add_account вместо объекта учетной записи.

Создайте объект учетной записи, acc = Account(name="acc4"), а затем передайте его в add_account, rep_1.add_account(acc).

  • 1
    Обратите внимание, что после исправления этого следующий вызов print() отобразит None потому что метод SalesRep.add_account() ничего не возвращает ...
  • 0
    Спасибо вам обоим!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню