Greetings.
> (sempre come java.. in altri termini non c'e'
> predichiarazione come in C++, che
> hai la definizione dell'interfaccia nel .h e
> l'implementazione nel .cpp)
...e questo (.h) sarebbe *Bello*?? tutti i gusti sono gusti.
(ma in java c'e' javadoc e in python...)
> e le variabili sono dinamiche e quindi non vengono dichiarate
> nemmeno quelle.
> Se un metodo interno della classe automobile usa la variabile
> colore della
> classe, tu non sai che quella variabile esiste, a meno che
> non spulci il
> codice.
Io sono un perlista arrabbiato, (e iscritto a the perl journal:
http://www.tpj.com) ma questo e' ingiusto verso python.
Ad esempio dir(classname) oppure:
[tratto da "Dive into python": http://www.diveintopython.org]
def help(object, spacing=10, collapse=1):
"""Print methods and doc strings.
Takes module, class, list, dictionary, or string."""
methodList = [e for e in dir(object) if callable(getattr(object,
e))]
processFunc = collapse and (lambda s: " ".join(s.split())) or
(lambda s: s)
print "\n".join(["%s %s" %
(method.ljust(spacing),
processFunc(str(getattr(object,
method).__doc__)))
for method in methodList])
Cio' non toglie che in python puoi sempre fare:
class Foo:
pass
f=Foo()
f.whatever=3 #Now f has the whatever attribute
Ma se lo fai, sono poi anche affari tuoi. Se non vuoi permetterlo, si puo'
sempre sovrascrivere
i metodi __getattr__, __setattr__....
Cheers,
alf
|