Unbound Method Error
lczancanella
lczancanella at gmail.com
Mon Jun 8 22:23:03 EDT 2009
Hi, i am brand new in Python, so sorry if this question is too basic,
but i have tried a lot and dont have success... I have the following
code...
class Funcoes:
def CifradorDeCesar(mensagem, chave, funcao):
mensagem_encriptada=''
if funcao == 1:
for byte in mensagem:
if byte.isalpha():
byte_encriptado=chr(ord(byte)+chave)
if byte.isupper() and ord(byte_encriptado) > 90:
byte_encriptado=chr(ord(byte_encriptado)-26)
if byte.islower() and ord(byte_encriptado) > 122:
byte_encriptado=chr(ord(byte_encriptado)-26)
else:
byte_encriptado=byte
mensagem_encriptada+=byte_encriptado
else:
for byte in mensagem:
if byte.isalpha():
byte_encriptado=chr(ord(byte)-chave)
if byte.isupper() and ord(byte_encriptado) < 65:
byte_encriptado=chr(ord(byte_encriptado)+26)
if byte.islower() and ord(byte_encriptado) < 97:
byte_encriptado=chr(ord(byte_encriptado)+26)
else:
byte_encriptado=byte
mensagem_encriptada+=byte_encriptado
return mensagem_encriptada
class MC(Funcoes, type):
def __init__(cls, clsname, bases, ns):
def addtrace(f):
def t(self, *args, **kwargs):
for att in self.__crypt__:
atribcripto = getattr(self, att)
atribdescripto = Funcoes.CifradorDeCesar
(atribcripto, 3, 2)
setattr(self, att, atribdescripto)
ret = f(self, *args, **kwargs)
for att in self.__crypt__:
atribdescripto = getattr(self, att)
atribcripto = Funcoes.CifradorDeCesar
(atribdescripto, 3, 1)
setattr(self, att, atribcripto)
# aqui seta __signature__ vazio, assina e atribui
__signature__
return ret
return t
from types import FunctionType
for name,obj in ns.items():
if type(obj) == FunctionType:
setattr(cls, name, addtrace(ns[name]))
class C():
__metaclass__ = MC
__crypt__ = ["_a", "_b"]
_a = 1
_b = 2
def add(self, a, b):
_a = a
_b = b
return a+b
then i call
>>> i = C()
>>> i.add(2,2)
and the error:
File "C:\Users\Junior\Desktop\Python\T2.py", line 37, in t
atribdescripto = Funcoes.CifradorDeCesar(atribcripto, 3, 2)
TypeError: unbound method CifradorDeCesar() must be called with
Funcoes instance as first argument (got int instance instead)
More information about the Python-list
mailing list