Sobre la primera duda, es muy simple.
Según la documentación oficial de pygame (
http://www.pygame.org/docs/ref/display.html); las dos funciones hacen lo mismo, pero de formas diferentes.
pygame.display.flip() : This will update the contents of the entire display. If your display mode is using the flags pygame.HWSURFACE and pygame.DOUBLEBUF, this will wait for a vertical retrace and swap the surfaces. If you are using a different type of display mode, it will simply update the entire contents of the surface.
When using an pygame.OPENGL display mode this will perform a gl buffer swap.
Esto se traduce como:
pygame.display.flip() : Esto actualizara el contenido de toda la pantalla. Si utilizas las banderas pygameHWSURFACE y pygame.DOUBLEBUF, esto esperara por un retraso vertical y el intercambio de las superficies. Si utilizas un modo de visualización diferente (sin usar las banderas), eso simplemente actualizara el contenido por completo de la superficie.
Cuando se usa la bandera del modo de visualización, pygame.OPENGL , esto llevara un intercambio del buffer gl (la parte de OpenGL dedicada al movimiento de vértices)
Mientras que pygame.dysplay.update()...
update portions of the screen for software displays
pygame.display.update(rectangle=None): return None
pygame.display.update(rectangle_list): return None
This function is like an optimized version of pygame.display.flip - update the full display Surface to the screen for software displays. It allows only a portion of the screen to updated, instead of the entire area. If no argument is passed it updates the entire Surface area like pygame.display.flip - update the full display Surface to the screen.
You can pass the function a single rectangle, or a sequence of rectangles. It is more efficient to pass many rectangles at once than to call update multiple times with single or a partial list of rectangles. If passing a sequence of rectangles it is safe to include None values in the list, which will be skipped.
This call cannot be used on pygame.OPENGL displays and will generate an exception.
Traducido:
Actualiza porciones de la pantalla por visualización de software.
Esta función es parecida y optimizada de pygame.display.flip(). Actualiza por completo la pantalla para visualizaciones de software. Esto permite solo la actualización de una parte de la pantalla, en lugar de toda la zona. Si no revise argumentos, se actualiza toda la superficie como pygame.display.flip() (lo que sigue es un resumen de lo que hace flip ...)
Puedes pasar la función de un rectángulo, o una serie de rectángulos. Es más eficiente pasar rectángulos al mismo tiempo, que a llamar a la actualización varias veces que solo con una lista parcial de los rectángulos. Si se pasa una secuencia de rectángulos que es seguro incluye un valor None (nulo) en la lista, que eso sera evitado.
Esto no se usara con la bandera pygame.OPENGL, eso generara una excepción
No sé si esto responda la primera duda, o la revuelva mas...
Sobre la segunda, "object" es solo una palabra reservada para las clases nuevo estilo en Python, son clases que buscan evitan las relaciones en diamante (
http://es.wikipedia.org/wiki/Problema_del_diamante) en la herencia múltiple....
Espero que esto sea lo que buscas
