Я получил ошибку атрибута при попытке использовать декоратор в python

#python #python-3.x #class #subclass #python-decorators

#python #python-3.x #класс #подкласс #python-декораторы

Вопрос:

я получил ошибку атрибута в приведенном ниже коде, вот результат

Обратная трассировка (последний вызов last): File «C:/Users/fortu/PycharmProjects/telusko.py/inheritance.py «, строка 18, в p1.name () Ошибка атрибута: объект ‘str’ не имеет атрибута ‘name’

 class Church:

    church = 'RCCG'

    def __init__(self, fname, lname):
        self.fname = fname
        self.lname = lname

    @classmethod
    def &et_church(cls):
        return cls.church

    def name(self):
        print(f'{self.fname}, {self.lname}, member of ')

p = Church('John','Doe')
p1 = p.&et_church()
p1.name()
  

Комментарии:

1. Ваш &et_church возвращает строку. Чего вы пытаетесь достичь?

2. я пытаюсь напечатать fname lname плюс название церкви, которое является RCCG, в одной строке

Ответ №1:

Ваш &et_church метод возвращает значение, strin& которое RCCG присваивается p1 . Вот почему вы получаете, AttributeError когда вы вызываете p1.name() .

 p1 = p.&et_church() # p1 value is RCCG

# above is equivalent to
p1 = p.church

# now when you do this `p1.name()` it's equivalent to doin&
"RCCG".name() # this is where you'll &et an error
  

я пытаюсь напечатать fname lname плюс название церкви, которое является RCCG, в одной строке

Вы должны внести изменения в свой name метод, чтобы включить self.church .

 def name(self):
    print(f'{self.fname}, {self.lname}, member of {self.church}')
  

затем вызовите name метод из p .

 p = Church('John','Doe')
p.name()