Como expressei em um tópico anterior do fórum, estou desenvolvendo um pequeno sistema de "site de cursos" com o objetivo de praticar. Ontem me deparei com um erro que, pelo menos na minha cabeça, não faz sentido.
Ocultei outros códigos que fazem parte do sistema para o código principal caber aqui. Se for necessário, enviarei-os nos comentários.
Código principal:
from src.banco.classes_banco import Conta
from src.site.classes_de_alunos_e_professores import Aluno
class Curso:
def __init__(self, nome, aulas, professor, preco):
self._nome = nome
self._aulas = aulas
self._professor = professor
self._nota = self.nota_media()
self._avaliacoes = []
self._preco = preco
@property
def nome(self):
return self._nome
@property
def aulas(self):
return self._aulas
@property
def professor(self):
return self._professor
@property
def nota(self):
return self._nota
@property
def preco(self):
return self._preco
@property
def avaliacoes(self):
return self._avaliacoes
def nota_media(self):
if not self._avaliacoes:
return "O curso ainda não foi avaliado"
else:
soma_das_notas = 0
for nota in self.avaliacoes:
soma_das_notas = sum(nota)
media = soma_das_notas/len(self._avaliacoes)
return media
class CursoProgramacao(Curso):
def __init__(self, nome, aulas, linguagem, professor, preco):
super().__init__(nome, aulas, professor, preco)
self._nome = nome
self._aulas = aulas
self._linguagem = linguagem
self._professor = professor
self._nota = self.nota_media()
self._avaliacoes = []
self._preco = preco
def __str__(self):
print(f"Nome do curso: {self._nome}; Nº de aulas: {self.aulas}; Tipo: Programação; "
f"Linguagem: {self._linguagem}; Professor: {self._professor}; Nota: {self._nota}; Preço: R${self._preco}")
class CursoDesign(Curso):
def __init__(self, nome, aulas, ferramenta, professor, preco):
super().__init__(nome, aulas, professor, preco)
self._nome = nome
self._aulas = aulas
self._ferramenta = ferramenta
self._professor = professor
self._nota = self.nota_media()
self._avaliacoes = []
self._preco = preco
def __str__(self):
print(f"Nome do curso: {self._nome}; Nº de aulas: {self._aulas}; Tipo: Design; Ferramenta: {self._ferramenta};"
f" Professor: {self._professor}; Nota: {self._nota}; Preço: R${self._preco}")
class CursoMobile(Curso):
def __init__(self, nome, aulas, so, professor, preco):
super().__init__(nome, aulas, professor, preco)
self._nome = nome
self._aulas = aulas
self._so = so
self._professor = professor
self._nota = self.nota_media()
self._avaliacoes = []
self._preco = preco
def __str__(self):
print(f"Nome do curso: {self._nome}; Nº de aulas: {self._aulas}; Tipo: Mobile; SO: {self._so};"
f" Professor: {self._professor}; Nota: {self._nota}; Preço: R${self._preco}")
conta_do_alan = Conta("Alan", 123, 130.0)
aluno = Aluno("Alan", conta_do_alan)
aluno.resume_situacao()
curso = CursoProgramacao("Python 3", 9, "Python", "Carlos", 100.0)
print(curso)
Erro:
Traceback (most recent call last):
O/A aluno/a Alan ainda não assinou cursos.
File "C:/Users/Windows 10/PycharmProjects/desenvolvimento_cursos/src/site/classes_de_cursos.py", line 105, in <module>
curso = CursoProgramacao("Python 3", 9, "Python", "Carlos", 100.0)
File "C:/Users/Windows 10/PycharmProjects/desenvolvimento_cursos/src/site/classes_de_cursos.py", line 56, in __init__
super().__init__(nome, aulas, professor, preco)
File "C:/Users/Windows 10/PycharmProjects/desenvolvimento_cursos/src/site/classes_de_cursos.py", line 11, in __init__
self._nota = self.nota_media()
File "C:/Users/Windows 10/PycharmProjects/desenvolvimento_cursos/src/site/classes_de_cursos.py", line 41, in nota_media
if not self._avaliacoes:
AttributeError: 'CursoProgramacao' object has no attribute '_avaliacoes'
Process finished with exit code 1
Alguém poderia me ajudar?
Grato.