Il dir
builtin elencherà tutti gli attributi di un oggetto, ad esempio:
>>> class MyClass:
... def one(self):
... print "one"
... def two(self):
... print "two"
... def three(self):
... print "three"
...
>>> dir(MyClass)
['__doc__', '__module__', 'one', 'three', 'two']
I t funziona anche su una classe inizializzato ..
>>> c = MyClass()
>>> dir(c)
['__doc__', '__module__', 'one', 'three', 'two']
metodi sono solo gli attributi che capita di essere callable (via c.attribute()
) - siamo in grado di utilizzare la funzione di getattr
fare riferimento a quel metodo tramite una variabile ..
>>> myfunc = getattr(c, 'one')
>>> myfunc
<bound method MyClass.one of <__main__.MyClass instance at 0x7b0d0>>
Allora possiamo semplicemente chiamiamo variabile ..
>>> myfunc()
one # the output from the c.one() method
Dal momento che alcuni attributi non sono funzioni (nell'esempio di cui sopra, __doc__
e __module__
). Noi siamo in grado il callable builtin per verificare se si tratta di un metodo callable (una funzione):
>>> callable(c.three)
True
>>> callable(c.__doc__)
False
Quindi, per combinare tutto ciò che in un ciclo:
>>> for cur_method_name in dir(c):
... the_attr = getattr(c, cur_method_name)
... if callable(the_attr):
... the_attr()
...
one
three
two
Ricordate questo chiamerà metodi come __init__
ancora una volta, che probabilmente non è desiderato.È possibile saltare qualsiasi cur_method_name
che inizia con un carattere di sottolineatura
-1 Per bloccare l'intera espressione nell'istruzione return rendendola completamente illeggibile. –