classmethods, class variables and subclassing

Steve Holden steve at holdenweb.com
Fri Oct 21 11:11:05 EDT 2005


Andrew Jaffe wrote:
> Steve Holden wrote:
> 
>>Andrew Jaffe wrote:
>>
>>>Steve Holden wrote:
>>>
>>>>Andrew Jaffe wrote:
>>>>
>>>>
>>>>>The problem is that I actually do want to call these methods on the 
>>>>>class itself, before I've made any instances.
>>>>>
>>>>
>>>>Except you could use staticmethods with an explicit class argument ...
>>>
>>>Yep, that would work! Thanks.
>>>
>>>But it does seem like a bit of a kludge: classmethods seems to be 
>>>almost exactly what you 'ought' to use here (i.e., I really do want to 
>>>apply these methods to the class as an object in its own right).
>>>
>>
>>What's the use case?
> 
> 
> Fair question. I hope the following isn't too technical.
> 
> I have a class which describes the model for fitting some data, 
> encapsulating among other things a bunch of parameters whose values I'd 
> like to determine for a given dataset. The base class is a simple model, 
> the derived class a slightly more complicated one with an extra parameter.
> 
> At present, I instantiate the class with a particular set of values for 
> the parameters.
> 
> One of the methods in this class is called 'prior', which returns the 
> prior probability for the instance's paramters.
> 
> However, it turns out there are some 'meta-parameters' which don't 
> change between instances, in particular the allowed limits on the 
> parameters, beyond which the prior should return 0. Currently these are 
> stored as class variables -- so both the base and derived class want to 
> be able to act as if these class variables are 'native' to their own 
> class -- since in fact the base/derived relationship is in this case 
> actually something of an implementation detail. (Currently I've solved 
> the problem by explicitly using the base class methods for setting the 
> class variables.)
> 
> Does this make sense?
> 

I think so. It's not normal adive, but it sounds like a metaclass might 
be what you need here.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC                     www.holdenweb.com
PyCon TX 2006                  www.python.org/pycon/




More information about the Python-list mailing list