class Raw ---> class Processor ---> class Final 2011/1/26 Tino Dai <obe...@gmail.com>
> > >> >> A raw casting comes into a factory. It is listed as such. When machined, >> this part number changes to a different part number. The raw casting has >> no "quality related" stuff, but the machined casting does, and it can have >> more than one "quality related" thing. >> >> ...because, the raw casting may go through multiple operations to get to >> it's final state. It may get machined on a lathe, then be transferred to a >> CNC machining station where a bolt circle may be drilled and tapped into >> it. Each of those operations on separate machines will have a different set >> of quality checks associated with it. >> >> ...or it might be a part that goes from a raw casting to a sort of >> "mini-assembly" such as a rocker lever (if you know what that is), so we >> have raw casting = one part number, then it gets a bushing pressed into it = >> another part number, then it gets a threaded insert = another part number, >> but it is still the same thing, and each one of those steps may have some >> sort of quality check involved. >> >> Lets complicate things even further. One raw casting may be machined into >> multiple part numbers. Perhaps the only thing that changes is the location >> of a single hole. But again, each one of those part numbers may go through >> multiple machining operations on different machines, with different quality >> checks. This is done through something called a "tabbed" blueprint, wherein >> there is a master number, but there are "tabs" indicating that if you >> changes such and such feature, then the part number isn't the master number, >> but the tabbed number. >> >> So, in essence, there's a sort of "network" of "is-a" and "has-a" >> information. >> >> My idea was to, instead of having just a single "part" class, to have a >> sort of "component aggregate" class, which would cover not only single >> parts, but assemblies of parts. So, even if a part was as simple as a raw >> casting that is just machined into a finished part and that's it, it would >> still be treated as a sort of assembly, with the raw casting being a >> component of the finished part number, if that makes sense. >> >> So there's all this information associated with a given part. I am >> thinking it has a sort of tree structure. I am just wondering if some of >> the branches of the tree should be separate classes that are then tied into >> the "trunk" of the master class, or if the whole thing should be a tree into >> and of itself. >> >> ...and yeah, I know, it's kind of a complex problem for a newbie to be >> thinking about. >> >> >> >> > Here is my two-cents. This code is untested. Import statements haven't been > included, there could be syntax errors, etc etc etc. What I did > was switching off the part_number attribute in the Thing class. For the > functions that "do stuff" to the thing instance, I appended a part-number > (assuming new part number = master number + doing stuff number). The quality > functions will check for that part number before proceeding with the checks. > > > class Thing: # single part class > def __init__(self,part_number='12345'): # 12345 is a default > part number > self.part_number=part_number > > def routeThing(thing): > try: > thing.part_number.append('-someRoutingPartNumber') > <do routing> > exception AttributeError (e): > e.printStackTrace() > print "Router was not applied to thing" > > def checkQualityRoute1(thing): > if hasattrib(thing,part_number) && > (thing.part_number.find('-someRoutingPartNumber'): > <do quality checks> > else: > print "Thing has not be routed yet" > > def checkQualityRoute2(thing): > if hasattrib(thing,part_number) && > (thing.part_number.find('-someRoutingPartNumber'): > <do quality checks> > else: > print "Thing has not be routed yet" > > .... continue for all of the functions that you might need > > HTH, > -Tino > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor > >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor