On Fri, Aug 28, 2009 at 5:21 PM, Damon Timm<damont...@gmail.com> wrote: > Sorry for the double post! Went off by mistake before I was done ... > > Anyhow, I would like to have a tuple defined at the beginning of my > code that includes classes *before* they are defined ... as such (this > is on-the-fly-hack-code just for demonstrating my question): > > VIDEO_TYPES = ( > (SyncYoutube, > re.compile(r'([^(]|^)http://www\.youtube\.com/watch\?\S*v=(?P<youtubeid>[A-Za-z0-9_-]+)\S*'),), > (SyncVimeo, re.compile(#more regex here#),), > (SyncBlip, re.compile(#more regex here#),), > ) > > class Video(object): > url = "http://youtube.com/xxxx" > #variables ... > > def sync(self): > for videotype in VIDEO_TYPES: > #check the url against the regex, > # if it matches then initiate the appropriate class and > pass it the current "self" object > sync = videotype[0](self).sync() > > class SyncYoutube(object): > def __init__(self,video): > self.video = video > > def sync(self): > #do some custom Youtube syncing here > > class SyncBlip(object): > #etc > > > This way, I can get any video object and simply run Video.sync() and > it will figure out which "sync" to run. However, I am finding (of > course) that I can't reference a class that hasn't been defined!
Just move the definition of VIDEO_TYPES after the def'n of the classes it uses. Video.sync() will compile just fine, it doesn't need VIDEO_TYPES to be defined until it is executed. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor