From: Geoffrey T. <gta...@na...> - 2001-12-10 21:10:44
|
At 01:59 PM 12/10/01 -0800, Tavis Rudd wrote: >Geoff, >going back to your class-based config syntax... > >The reason we'd need to subclass SettingsContainer is that it is >possible to have settings that are in fact classes and don't begin >with an underscore: > >## >from SettingsManager import SettingsContainer as SC >class Applications(SC): > class MyApp(SC): > class Dirs: # virtual dirs like <location> in Apache > Services = '/home/tavis/MyApp/Services' > Products = '/home/tavis/MyApp/Products' > from Foo import Bar as ApplicationClass > from Foo import Whiz as RequestClass > from Foo import Bang as SessionStoreClass >## It seems very odd to me to have a value in a config file be an actual class object. I was expecting settings to be things like ints, strings, lists, dictionaries, tuples, etc. but all basically constants that didn't depend on code. I would propose that to specify a class as a config setting, you would specify a string like "Package.Module:Class" where you can leave off the ":Class" part if the class name is the same as the module name. PSP uses this convention for importing stuff and specifying base classes. So your example would be: class Applications: class MyApp: class Dirs: # virtual dirs like <location> in Apache Services = '/home/tavis/MyApp/Services' Products = '/home/tavis/MyApp/Products' ApplicationClass = 'Foo:Bar' RequestClass = 'Foo:Whiz' SessionStoreClass = 'Foo:Bang' The advantage is that you can import the config file without having to actually import the class. Perhaps you're just running a config file pretty-printing utility, and you don't want it to have to actually do the import. -- - Geoff Talvola gtalvola@NameConnector.com |