#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()