Preguntas etiquetadas con oop

1130
¿Cuál es el propósito de la palabra 'yo'?

¿Cuál es el propósito de la selfpalabra en Python? Entiendo que se refiere al objeto específico creado a partir de esa clase, pero no puedo ver por qué debe agregarse explícitamente a cada función como parámetro. Para ilustrar, en Ruby puedo hacer esto: class myClass def myFunc(name) @name =...

955
¿Qué es un mixin y por qué son útiles?

En " Programación de Python ", Mark Lutz menciona "mixins". Soy de un fondo C / C ++ / C # y no he escuchado el término antes. ¿Qué es un mixin? Leyendo entre las líneas de este ejemplo (al que me he vinculado porque es bastante largo), supongo que es un caso de usar herencia múltiple para...

872
¿Por qué a veces es útil setTimeout (fn, 0)?

Recientemente me he encontrado con un error bastante desagradable, en el que el código se estaba cargando <select>dinámicamente a través de JavaScript. Este cargado dinámicamente <select>tenía un valor preseleccionado. En IE6, ya teníamos código para arreglar lo seleccionado...

865
¿Cómo recorrer dos listas en paralelo?

Tengo dos iterables en Python, y quiero revisarlos en pares: foo = (1, 2, 3) bar = (4, 5, 6) for (f, b) in some_iterator(foo, bar): print "f: ", f, "; b: ", b Debería resultar en: f: 1; b: 4 f: 2; b: 5 f: 3; b: 6 Una forma de hacerlo es iterar sobre los índices: for i in xrange(len(foo)):...

814
¿Qué significa "programar en una interfaz"?

He visto esto mencionado varias veces y no tengo claro qué significa. ¿Cuándo y por qué harías esto? Sé lo que hacen las interfaces, pero el hecho de que no tengo claro esto me hace pensar que me estoy perdiendo el uso correcto. ¿Es así si tuvieras que hacer: IInterface classRef = new...

799
¿Emular un bucle do-while en Python?

Necesito emular un ciclo do-while en un programa Python. Desafortunadamente, el siguiente código directo no funciona: list_of_ints = [ 1, 2, 3 ] iterator = list_of_ints.__iter__() element = None while True: if element: print element try: element = iterator.next() except StopIteration:...

796
¿Qué hacen __init__ y self en Python?

Estoy aprendiendo el lenguaje de programación Python y me encontré con algo que no entiendo completamente. En un método como: def method(self, blah): def __init__(?): .... .... ¿Qué selfhacer? ¿Qué se supone que es? ¿Es obligatorio? ¿Qué hace el __init__método? ¿Por qué es necesario?...

767
Interfaz vs clase base

¿Cuándo debo usar una interfaz y cuándo debo usar una clase base? ¿Debería ser siempre una interfaz si no quiero definir realmente una implementación base de los métodos? Si tengo una clase de perros y gatos. ¿Por qué querría implementar IPet en lugar de PetBase? Puedo entender tener interfaces...