[ "oradoriun" <[EMAIL PROTECTED]> ]:
----------------------------------------
|  
|  Mas experimentei a sua sugestão
|  e pedi apenas um  "return objeto",
|  ao invés de fazer a chamada do método objeto.consulta,
|  não sei como mas ele o executou, acho estranho
|  acontecer isso sem fazer qualquer chamada.
|  O que acorreu foi o seguinte:
|  Retornou isso no browser...
|  
|  Nome: <bound method Instituicao.get_Nome of <Instituicao at
|  inst0025>>    UnidadeEscolar: <bound method
|  Instituicao.get_UnidadeEscolar of <Instituicao at inst0025>>         
|  ModalidadeEnsino: <bound method Instituicao.get_ModalidadeEnsino of
|  <Instituicao at inst0025>>    Classificacao: <bound method
|  Instituicao.get_Classificacao of <Instituicao at inst0025>>   Diretor:
|  <bound method Instituicao.get_Diretor of <Instituicao at inst0025>>  
|  Cnpj: <bound method Instituicao.get_Cnpj of <Instituicao at inst0025>> 
|  
|  Isso tudo em uma linha só.

Experimente colocar um () após cada um dos métods abaixo, assim:

ref = type(self)
arg_id = ref.get_id()
arg_nome = ref.get_Nome()
# etc

Até onde eu entendi do seu problema (e não foi muito hehehe)
é preciso distinguir o seguinte em Python:

<code>
>>> class SomeKlazz(object):
...     def someMethod(self):
...         pass
...
>>> obj = SomeKlazz()
>>> obj.someMethod
<bound method SomeKlazz.someMethod of <__main__.SomeKlazz object at 
0xb7e0ae2c>>>>> obj.someMethod()
>>>
</code>

O exemplo acima ilustra que métodos (e funções) são "valores de primeira classe"
(NdT: first class values), ou seja, podem ser passados como parâmetros,
armazenados em estruturas de dados e invocados.
Quando vc pede para o interpertador Python transformar em string (sem invocar)
um método vinculado a uma classe ele retorna a string que descreve o objeto.
Algum lugar nas entranhas do seu código Zope foi recebido um objeto do tipo
(bound method == método vinculado a alguma instância) e foi aplicado a ele
a função str() e o resultado foi o que vc descreveu.
Em suma, talvez só esteje faltando invocar o método em algum lugar através
da adição de () após o nome do método.

Espero que isso ajude (ao invés de confundir mais).  


Abração,
Senra

-------------
Rodrigo Senra
GPr Sistemas

Reply via email to