Una delle grandi cose di Python è la capacità di avere un'introspezione su metodi e funzioni. A titolo di esempio, per ottenere la firma funzione del math.log
è possibile (in ipython) eseguire questo:L'introspezione su pygtk3 è possibile?
In [1]: math.log?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function log>
Namespace: Interactive
Docstring:
log(x[, base])
Return the logarithm of x to the given base.
If the base not specified, returns the natural logarithm (base e) of x.
E vedere che x
e opzionalmente base
sono i parametri di questa funzione.
Con il nuovo gtk3 e lo automaticall generated pygobject bindings, in tutti gli esempi ho provato sempre e solo a ottenere (*args, **kwargs)
come parametri di ogni metodo gtk.
Esempio: Label.set_text which requires a string:
In [1]: from gi.repository import Gtk
In [2]: mylabel = Gtk.Label("hello")
In [3]: mylabel.set_text?
Type: instancemethod
Base Class: <type 'instancemethod'>
String Form: <bound method Label.set_text of <Label object at 0x275b230 (GtkLabel at 0x28cd040)>>
Namespace: Interactive
File: /usr/lib/python2.7/dist-packages/gi/types.py
Definition: L.set_text(*args, **kwargs)
Docstring:
<no docstring>
ora la domanda: è questo (la perdita di metodo di introspezione per i binding python) qualcosa che cambierà ancora una volta (documentazione) sforzo è andato in pygobjects o è questo qualcosa che è qui per rimanere a causa del modo in cui Pygobjects funziona?
Ottima domanda. Consiglio anche di chiederlo a qualunque mailing list si occupi di pygobject. – ptomato
Il punto delle generazioni di associazioni automatiche è che la stessa documentazione C generata tramite gtk-doc funziona per ogni lingua. Quindi, quello che penso dovrebbe essere utile, è che gli sviluppatori di pygi generano i documenti per Python nello stesso modo in cui fanno i binding. – erick2red