vimrc – My vim configuration for Python

Install my personal vim configuration optimized for Python

https://github.com/jolth/vimrc

Anuncios

install vim with support for python 2.7/3.X

* remove vim:

$ sudo apt-get purge $(dpkg --get-selections|grep -i vim|cut -f1)

* install the dependencies:

$ sudo apt install python-dev python3-dev libncurses5-dev git

* download sources:

$ cd /tmp/
$ git clone http://github.com/vim/vim.git
$ cd vim

* configure and compiling sources:

$ ./configure \
--enable-pythoninterp \
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
--enable-python3interp \
--with-python-config-dir=/usr/lib/python3.?/config-3.?m-x86_64-linux-gnu \
--with-features=huge \
--enable-multibyte \
--with-x=yes \
--prefix=/usr
$ make
$ sudo make install

* check the support for python:

$ vim --version|grep --color -i python

you’re should see +python

* Set vim as your editor for default:

$ sudo update-alternatives --install $(which editor) editor $(which vim) 40
$ sudo update-alternatives --config editor

 

Reference
http://vi.stackexchange.com/questions/2403/vim-code-completion-for-python-3
https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source
http://blog.sjas.de/posts/Compile-vim-on-Debian-7.html

Métodos especiales avanzados de las Clases en Python

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) Sigue leyendo 

Métodos especiales de las Clases en Python

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”. Sigue leyendo

Clases en Python

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__“. Sigue leyendo