Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Import de arquivo py

Olá pessoas. Estou tentando fazer uma importação de um arquivo py que tenho para outro arquivo py (atenção, NÃO estou tentando importar biblioteca). Mas eu não consigo chamar o arquivo. Eu faço o import filmes no arquivo dados, mas depois disso não sei como chamar para ele rodar. A minha intenção é deixar o código mais limpo, assim em um arquivo fica as classes e funções e em outro os prints/listas. Para não ficar aquela maçaroca de listas no final do código. Na verdade não sei se isso é possível.

O código é esse:

class Programa: def init(self, nome, ano): self.nome = nome.title() self.ano = ano self.like = 0

@property
def like(self):
    return self._like

def dar_like(self):
    self._like += 1

@property
def nome(self):
    return self._nome

@nome.setter
def nome(self, novo_nome):
    self._nome = novo_nome.title()

def __str__(self):
    return f'{self._nome} - {self.ano} - {self._like} Likes'

class Filme(Programa): def init(self, nome, ano, duracao): super().init(nome, ano) self.duracao = duracao

def __str__(self):
    return f'{self._nome} - {self.ano} - {self.duracao} - {self._like} Likes'

class Serie(Programa): def init(self, nome, ano, temporadas): super().init(nome, ano) self.temporadas = temporadas

def __str__(self):
    return f'{self._nome} - {self.ano} - {self.temporadas} - {self._like} Likes'

vingadores = Filme('vingadores - guerra infinita', 2018, '2 HR 16 MIN') atlanta = Serie('atlanta', 2018, '2 TEMPORADAS') tmep = Filme('Todo mundo em Pânico', 1999, '1 HR 10 MIN') demolidor = Serie('Demolidor', 2016, '2 TEMPORADAS')

vingadores.dar_like()

filmes_e_series = [vingadores, atlanta, demolidor, tmep] playlist_weekend = Playlist('fim de semana', filmes_e_series)

for programa in playlist_weekend: print(programa)

3 respostas
solução!

Se eu entendi bem, você quer acessar classes e métodos, que foram criados em um arquivo, através de outro arquivo, correto? Nesse seu caso específico, ao importar um arquivo (que é igual a importar uma biblioteca, se não me engano) você precisa especificar o que quer do arquivo. Não consegui compreender muito bem o seu código, então vou tentar expor com um exemplo: Vamos ter como base um arquivo utils.py que será acessado por um outro arquivo

class Util():
    def __init__(self) -> None:
        pass

Para importar esse arquivo, utiliza-se o import:

import utils

Porém utils é o modulo inteiro, a classe está dentro do módulo, portanto, para acessá-la:

a = utils.Util()

Uma outra forma de fazer isso, é especificar o que deve ser importado, isso é especialmente util quando um módulo possui muitas coisas, e não se quer utilizar tudo.

from utils import Util
a = Util()

Para importar tudo de um módulo:

from utils import *
a = Util()

Não sei se entendi muito bem a sua dúvida, mas espero que isso ajude.

Eu tenho várias classes e estava tentando usar o - from utils import * a = Util() - e não dava certo. Agora tentei usar esse que você sugeriu - from utils import Util a = Util() - com todas as classes e deu certo! Teve uma parte que não rodou, mas se eu retirar o resto funciona perfeitamente, thanks Pedro :-D

Magina que bom que deu certo, se puder marcar como resolvido pra deixar registrado, :)