[IPython-dev] Re: Changes to Notebook Format

Fernando Perez Fernando.Perez at colorado.edu
Fri Jul 22 14:42:42 EDT 2005


Toni Alatalo wrote:

> BTW, if i may suggest a style issue: the nbshell code seems to include 
> 'getters' that would be naturally properties in current Python (they 
> came already in 2.2 so no version prob.), e.g. these in PythonPluginFactory:
> 
>    def GetString(self):
>         """ Returns the type string of the plugin. This is used when a 
> notebook
>         file is loaded. See notebookformat.txt for more info"""
>         return "python"
>    
>     def GetType(self):
>         """ Returns the way data should be passed to the plugin. Currently
>         supported types are "raw" and "encoded". See notebookformat.txt for
>         more info"""
>         return "raw" #Probably only the python code plugin should be raw
> 
> those are currently unnecessary, but could be just .string and .type (or 
> perhaps .type and .input_type?). then later if they need to wrapped to 
> some method just make them properties ( 
> http://www.python.org/2.2/descrintro.html#property ).

+1 on properties.  I _hate_ code littered with getX/setX everywhere.  This is 
not Java.  I've been convinced to use XML, but that's about as far as you'll 
get me to go ;)

In fact, make X a regular attribute unless it really requires extra 
validation, synchronization, or work to read/write.  But none of this, please:

def getX(self):
   return _X

If that's all we need, then X can just be read as foo.X, set as foo.X='bar', 
and we're done.  As Guido likes to say, python is a language for adults :)  If 
in the future things evolve to the point where X needs fancier access 
controls, it can be turned into a property, and user code (which still 
respects the validation constraints) will be unaffected.

Cheers,

f




More information about the IPython-dev mailing list