abril 20, 2013 – 10:03 am
Más métodos especiales.
__repr__(self):
Es un método especial que se invoca cuando llamamos a “repr(instancia)” y busca emular la funcionalidad de la función interna repr(), para devolver la representación textual de nuestro objeto.
Podemos definir nuestro método especial __repr__ en nuestra clase “Clientes” así:
def __repr__(self): return repr(self.data)
__len__(self):
Es un método especial que se invoca cuando llamamos a “len(instancia)” y busca emular la funcionalidad de la función interna len(). Funciona sobre cualquier objeto del que se pueda pensar razonablemente que tiene longitud. La función len() de una “cadena” es su número de caracteres; len() para un “diccionario” es su número de claves; len() de una lista o tupla es su número de elementos. Para instancias de clases; defina el método __len__ y programe usted mismo el cálculo de la longitud, y luego llame a len(instancia) para que Python invoque a su método especial __len__. P. e. para nuetra clase “Clientes” podemos crear nuestro método especial __len__ así:
def __len__(self): return len(self.data) Leer Más »
Python cuenta con una serie de métodos especiales incluidos que invoca por nosotros en circunstancias particulares o cuando se usa una sintaxis específica, con el fin de emular cierto tipo de funcionalidades. Supongamos que tenemos nuestra clase que cuenta con un diccionario con datos de un cliente.
>>> class Clientes:
... def __init__(self, dict=None):
... self.data = {}
... if dict is not None:
... self.update(dict)
... def update(self, dict=None):
... self.data.update(dict)
... def clear(self): self.data.clear()
... def keys(self): return self.data.keys()
... def items(self): return self.data.items()
... def values(self): return self.data.values()
... def getvalue(self, key): return self.data[key]
...
>>>
>>> c = Clientes({'nombre':'Jorge', 'apellidos':'Toro', 'nit':'100244235', 'cargo':'aseador', 'telefono':None})
>>> c
<__main__.Clietes instance at 0xb743d16c>
>>> c.keys()
['apellidos', 'nombre', 'telefono', 'nit', 'cargo']
>>> c.values()
['Toro', 'Jorge', None, '100244235', 'aseador']
>>> c.items()
[('apellidos', 'Toro'), ('nombre', 'Jorge'), ('telefono', None), ('nit', '100244235'), ('cargo', 'aseador')]
>>> # Obtener el cargo del cliente
... c.getvalue('cargo')
'aseador'
>>>
Los métodos especiales nos permiten realizar ciertas acciones o comportamientos diferentes a solo llamar métodos. En lugar de usar un método como “getvalue()”, puede hacerse con una sintaxis que no incluya una invocación explícita a métodos. Aquí es donde entran los “métodos especiales”, ya que nos proporcionan este tipo de sintaxis especial, convirtiendo la “sintaxis que no llama a métodos” en “llamadas a métodos”. Leer Más »
Las clases en programación son un mecanismo diseñado para asemejarnos a los objetos de la vida real. P.e. un Televisor o TV, tiene atributos como color, alto, ancho y puede realizar tareas como encenderse, apagarse, programarse, dañarse, entre otros.
En Python podemos decir que sirve para definir tipos por el usuario. Python define sus clases con la palabra reservada “class” seguida de su nombre, P.e “class Imp: “. Python no cuenta con constructores y destructores explícitos, pero sí con un método reservado para simular al constructor “__init__“. Leer Más »
Python Incorpora dos funciones locals() y globals(), que proporcionan acceso de tipo diccionario a las variables locales y globales.
La forma en que Python gestiona las variables se debe a los espacios de nombre (namespaces) donde se lleva un seguimiento de las variables. Un espacio de nombres se puede tratar como un diccionario donde las keys son los nombres de las variables y las values son los valores de dichas variables. Leer Más »
Pydiction nos permite completar código Python con un simple TAB.
1. Descargar Pydiction
http://www.vim.org/scripts/download_script.php?src_id=11062
2. Crear los directorios
$ mkdir -p ~/.vim/after/pydiction
$ mkdir -p ~/.vim/after/ftplugin Leer Más »
Este How-to es de gran ayuda cuando tenemos una aplicación que cuenta con una subaplicación para administración y otra para usuarios y que permita el uso de sesiones en cada una de estas subaplicaciones. Leer Más »
Nota:
Esta solución se ha tomado de este post en la lista de distribución de Web.py.
Problema
En su comportamiento por defecto, la información de la sesión sólo se puede compartir desde dentro de la aplicación principal, incluso si usted ‘importa‘ la sesión desde otro módulo.
Usted necesita ser capaz de acceder a la información de la sesión de la ‘Sub-Aplicación‘ pero como? Leer Más »
Problema
Usted quiere un sistema para autentificar a los usuarios, con una base de datos PostgreSQL.
Solucion
Un sistema de autenticación de usuario puede tener una gran cantidad de funciones. Para este ejemplo, sólo se va a gestionar el proceso de autenticación, a través de una base de datos PostgreSQL.
Lo Necesario
web.py para todas las funciones web y hashlib para almacenar las contraseñas de forma segura.
1 # -*- coding: utf-8 -*-
2 import web
3 import hashlib
4
1. La base de datos
En primer lugar, se necesita una tabla para los usuarios. Este esquema es muy simple, pero es suficiente para un montón de proyectos.
$ psql -d myweb
CREATE TABLE users (
id serial NOT NULL,
usuario varchar(80) NOT NULL UNIQUE,
pass char(40) NOT NULL,
email varchar(100) NOT NULL,
privilege integer NOT NULL DEFAULT 0,
CONSTRAINT utilisateur_pkey PRIMARY KEY (id)
);
Leer Más »
agosto 6, 2012 – 10:10 am
En este pequeño How-to realizaremos un pequeño aplicativo que nos permita tener una idea clara de cómo funcionan las sesiones y lo importante que son para nuestros App’s.
Un sistema de autenticación de usuario se compone de unas pocas partes. Adición de usuarios, logueo de usuarios, cierre de la sesión y comprobar si los usuarios están conectados.
Creamos nuestra bases de datos en SQLite:
$ sqlite3 users.db
sqlite> .tables
users
sqlite> insert into users values ('jolth', '123456');
sqlite> select * from users;
jolth|123456
sqlite>
sqlite> .quit
Leer Más »
Problema
Usted quiere un sistema para autentificar a los usuarios.
Solución
Un sistema de autenticación de usuario se compone de unas pocas partes. Adición de usuarios, logeo de usuarios, cierre de la sesión y comprobar si los usuarios están conectados. También se requiere una base de datos. Para este ejemplo vamos a utilizar MD5 y SQLite.
import hashlib
import web
def POST(self):
i = web.input()
authdb = sqlite3.connect('users.db')
pwdhash = hashlib.md5(i.password).hexdigest()
check = authdb.execute('select * from users where username=? and password=?', (i.username, pwdhash))
if check:
session.loggedin = True
session.username = i.username
raise web.seeother('/results')
else: return render.base("Those login details don't work.")
Nota:
No utilice este código en el sitio real – esto es sólo para ilustración