Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Acesso à Variaveis em outro modulo

Pessoal, boa noite. Estou tendo dificuldades em acessar duas variáveis que foram definidas em outro módulo. Vou tentar explicar a questão:

O código abaixo usa a biblioteca requests para fazer uma requisição HTTP e retoranr o status_code da página. Por exemplo, 404 - Not found, 502 Bad Gateway, 200 OK etc.... este módulo se chama "checkstatuspage.py" :

# coding: utf-8
import requests

class Checkstatuspage:

    def __init__(self, url):
        self.url = url

    def checkping(self):

        while True:
            hostname = requests.get(self.url)
            if hostname.status_code != 200:
        # Se hostname for diferente de 200, a variável status é criada com o valor em questão.
                status = (hostname.status_code)
        # E nesse caso, a variável status_color será este valor.
                status_color = ('card-red-top')
            else:
                status = (hostname.status_code)
                status_color = ('card-green-top')

Em outro módulo, chamado "app.py" , estou importando o checkstatuspage.py, criando uma extensão da classe objeto, no caso, check = Checkstatuspage('http://www.google.com'), e tentando chamar às variáveis que foram definidas no IF do módulo checkstatuspage.py . O que ocorre, é que se eu definir a variável status e status_color dentro do escopo do método, terei que obrigatoriamente atribuir valores para chama-los.

Como a variável status e status_color dependem de uma condicional para terem valores atribuídos a elas, como faço para acessa-las no módulo app.py ?

1 resposta
solução!

Pessoal, resolvi a questão. É o seguinte:

No arquivo checkstatuspage.py, declarei o atributo status e status_color na classe, e chamei o método checkping para atribuir valor aos respectivos atributos:

def __init__(self, url):

        self.url = url
        self.status = None
    self.status_color = None
        # Chamando método
        self.checkping()

No módulo app.py, atribui um objeto à classe e printei o valor do atributo:

Checkstatuspage('www.google.com')
print (check.status).

O problema que antes eu estava tendo, era justamente o de não definir o atributo na classe. Sendo assim, não conseguia chama-lo em outro módulo.