to be honest, myself i just use classes everywhere, but you just got to always remember old good advice "class is not a bucket of functions". of course it can be that, too, but class is in it's full potential when it's
a bucket of DATA and methods to operate that data.

i'd say that the best example where object oriented aproach is most
used in scripting for maya is "configure->use->reconfigure->use" case.

as example, imagine you're exporting pointcache. you can either have a top level procedure

def exportPointcache(object,file,frameFrom,frameTo,sampling,createSubfoldersOnOff,addPrefix)

or you can have it as a object and use as
exporter = ExportPointcache()
exporter.setFile(file)
exporter.setExportRange(frameFrom,frameTo)
exporter.setSampling(0.5)
exporter.setObject(object)
exporter.execute()
#export another object with same sampling and export range settings
exporter.setFile(anoherFile)
exporter.setObject(anotherObject)
exporter.execute()
...etc

though procedure aproach might seem a lot shorter, it actually isn't, as you'll have to prepare all the variables prior to call. if you're implementing some parameter checking inside exporter,you'll only do that after all arguments are prepared - in oop approach every parameter can be checked separately, so you catch errors sooner, etc. you can also reuse part of the object configuration, as well. you can have methods that reconfigure object, like, "do some calculations and store them back to the object" style of methods.

in my opinion, all the other OOP toys, like inheritance, polymorphism, etc - play a lot smaller role than in true OOP
environment, like, say, Java.


Greetings,

In developing Python scripts for Maya I am wondering when is is
appropriate to use a set of functions for a script and when it is better
form to use a class with methods?

Is this a purely semantical difference or are there good arguments for
why one should go one approach over another?

--
viktoras
www.neglostyti.com

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to