Autor Tópico: AttributeError: 'module' object has no attribute 'doc_cadastro'  (Lida 682 vezes)

Offline FenrisDK

  • void
  • *
  • Mensagens: 8
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
Código (Python): [Seleccione]
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
Código (Python): [Seleccione]
from cadastro import login_in
...
login_in()
...

agradeço ajuda ..
vlw ..
« Última modificação: 03 de Julho de 2009, 16:37 por FenrisDK »

Offline JoaoRodrigues

  • Unsigned User
  • *****
  • Mensagens: 2324
    • Doei Doei: Python, Bioinformatica, etc
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #1 em: 03 de Julho de 2009, 09:42 »
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:

Código (Python): [Seleccione]
import cadastro
print dir(cadastro)

E vê lá o que te aparece.



Mas sem "axaxinar" o português tá? ;)
http://doeidoei.wordpress.com

Online djthyrax

  • kicks Chuck Norris' ass!
  • Moderador
  • Stack Overflow
  • ******
  • Mensagens: 14403
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #2 em: 03 de Julho de 2009, 13:34 »
Em vez de usares apenas from cadastro import login_in usa from cadastro import *

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Offline FenrisDK

  • void
  • *
  • Mensagens: 8
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #3 em: 03 de Julho de 2009, 16:36 »
desculpa .. ja' era tarde e eu qria dormir  :-[
eu reescrevi o codigo e nao copie e nem prestei atencao .. mal
o certo e'

Código (Python): [Seleccione]
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'

Offline JoaoRodrigues

  • Unsigned User
  • *****
  • Mensagens: 2324
    • Doei Doei: Python, Bioinformatica, etc
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #4 em: 03 de Julho de 2009, 16:47 »
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?



Mas sem "axaxinar" o português tá? ;)
http://doeidoei.wordpress.com

Offline FenrisDK

  • void
  • *
  • Mensagens: 8
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #5 em: 03 de Julho de 2009, 17:15 »
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 ..

Online djthyrax

  • kicks Chuck Norris' ass!
  • Moderador
  • Stack Overflow
  • ******
  • Mensagens: 14403
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #6 em: 03 de Julho de 2009, 17:35 »
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:
Código (Python): [Seleccione]
import cadastro
global doc_cadastro
doc_cadastro = cadastro.doc_cadastro

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

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Offline FenrisDK

  • void
  • *
  • Mensagens: 8
Re: AttributeError: 'module' object has no attribute 'doc_cadastro'
« Responder #7 em: 03 de Julho de 2009, 19:14 »
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
« Última modificação: 03 de Julho de 2009, 19:22 por FenrisDK »