• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

FenrisDK

AttributeError: 'module' object has no attribute 'doc_cadastro'

8 mensagens neste tópico

ae .. to 1 mes procurando sobre python na net ..

tentando fazer um controle de estoque pro meu pai .. mas to com um problema agora

tenho um modulo (cadastro.py) q qdo chamo funciona normal como deve

mas se eu importo ele de outro modulo da esse error de atributo

tipo .. eu tenho

cadastro.py

class doc_cadastro(object):
    def __init__(self,nome,senha,admin):
          self.nome = nome
          self.senha = senha
          self.admin = admin
...
...
...
def login_in():
    worts = []
    try: worts = pickle.load(file('./worts.db'))
    except IOError: print 'Nao existem cadastros'
...

e o modulo principal ..

stoq.py

from cadastro import login_in
...
login_in()
...

agradeço ajuda ..

vlw ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

2 coisas no script cadastro.py:

1. O argumento da __init__ é "admin", e tens lá "amin". Um errozito :)

2. A função login_in é suposto estar FORA da classe doc_cadastro?

Quanto ao problema, que erro te dá? Tens que ter o script cadastro.py na mm pasta que o stoq.py para conseguires importar em condições. Tenta fazer:

import cadastro
print dir(cadastro)

E vê lá o que te aparece.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em vez de usares apenas from cadastro import login_in usa from cadastro import *

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpa .. ja' era tarde e eu qria dormir  :-[

eu reescrevi o codigo e nao copie e nem prestei atencao .. mal

o certo e'

class doc_cadastro(object): #esqci object tb
    def __init__(self,nome,senha,admin):
          self.nome = nome
          self.senha = senha
          self.admin = admin
...
def login_in():
    worts = []
    try: worts = pickle.load(file('./worts.db'))
    except IOError: print 'Nao existem cadastros'
    ...
...

joao

sim o login_in fica fora da classe

no dir(cadastro) .. tem outros modulos entao ta meio grande a lista .. mas aparece sim [doc_cadastro, login_in]

djthyrax

ja tentei so' import cadastro tb .. da msm erro

assim .. aparece esse erro pra mim

Exception in Tkinter callback

Traceback (most recent call last):

  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1414, in __call__

    return self.func(*args)

  File "C:\prog\python\stoq\stoq.py", line 95, in fechar_caixa

    if login_in():

  File "C:\prog\python\stoq\cadastro.py", line 65, in login_in

    try: worts = pickle.load(file('./worts.db'))

  File "C:\Python25\lib\pickle.py", line 1370, in load

    return Unpickler(file).load()

  File "C:\Python25\lib\pickle.py", line 858, in load

    dispatch[key](self)

  File "C:\Python25\lib\pickle.py", line 1090, in load_global

    klass = self.find_class(module, name)

  File "C:\Python25\lib\pickle.py", line 1126, in find_class

    klass = getattr(mod, name)

AttributeError: 'module' object has no attribute 'doc_cadastro'

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O tue problema não é do login_in mas sim dessa função esquisita que para aí tens :x Para que estás a usar isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao intendi .. ql funcao ?!

tipo coloquei um botao pra fechar o caixa .. como tem 2 pessoas no caixa

o login verifica qm esta no caixa ..

na hora de abrir e ler os login fala q nao existe a classe (q ta salva no arquivo q foi gravado com o pickle )

nao sei se deu pra intender ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta worts = pickle.load(open('./worts.db', 'r')) em vez de worts = pickle.load(file('./worts.db')). Se mesmo assim persistir o problema, experimenta por logo no início do file:

import cadastro
global doc_cadastro
doc_cadastro = cadastro.doc_cadastro

Acho que não precisas de fazer inherit da class object.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ae deu certo .. mas eu tive q fazer uma gambiara do demonio aq  :wallbash:

vo dexa assim .. depois numa atualizacao futura eu arrumo

vlw pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora