Olá,
No curso, o professor executa alguns comandos direto no código para criar os objetos e printar as informações. Como por exemplo:
vingadores = Filme('vingadores - guerra infinita', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
vingadores.dar_likes()
atlanta.dar_likes()
print(f'Nome: {vingadores.nome} - Likes: {vingadores.likes}')
print(f'Nome: {atlanta.nome} - Likes: {atlanta.likes}')
Porém, também estou executando os mesmos comando pelo prompt do Visual Studio 2019, para dar mais likes ou alterar o nome do filme. Mas por algum motivo está dando um erro quando eu tento executar pelo prompt e eu já verifiquei todo o código, até com o código do professor da o mesmo problema.
>>> from modelo import Filme
Nome: Vingadores - Guerra Infinita - Likes: 3
Nome: Atlanta - Likes: 2
>>> atlanta = Serie('atlanta', 2018, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Serie' is not defined
Ou seja, executando a linha de comando direto no código eu consigo criar um objeto atlanta, mas se eu fizer o mesmo comando no prompt, não vai.
Vou deixar meu código aqui pra ver se tem algum erro.
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
@property
def likes (self):
return self._likes
def dar_likes(self):
self._likes += 1
@property
def nome (self):
return self._nome
@nome.setter
def nome (self, novo_nome):
self._nome = novo_nome.title()
class Serie(Programa):
def __init__(self, nome, ano, temporada):
super().__init__(nome, ano)
self.temporada = temporada
class Filme(Programa):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self.duracao = duracao
vingadores = Filme('vingadores - guerra infinita', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
vingadores.dar_likes()
vingadores.dar_likes()
vingadores.dar_likes()
atlanta.dar_likes()
atlanta.dar_likes()
print(f'Nome: {vingadores.nome} - Likes: {vingadores.likes}')
print(f'Nome: {atlanta.nome} - Likes: {atlanta.likes}')
filmes_e_series = [vingadores, atlanta]