On Apr 24, 10:02 am, Jonathan Gardner <jgard...@jonathangardner.net>
wrote:
On Apr 24, 7:16 am, Jasper <jas...@peak.orgwrote:
I'm stuck using a library based on old style classes, and need to find
a class's parent at runtime.
With new style classes you can use .__base__ to inspect a parent, but
I can't remember how this was done in days of yore, before object.
I've tried googling, but apparently my search term Fu is weak. :-(
Can anyone help me out here? There must be something simple.
It's very odd that you need to know a class's parent. I'm interested
in hearing why you need this. In all my years, I've never had to do
this.
Regardless, I believe you are looking for __bases__.
*smack* That's what I get for programming too late into the morning;
can't believe I missed that. Thanks for sorting me out!
-Jasper
PS I'm using a hierarchy of (never instantiated) classes as resource
types in an economic sim, e.g. Resource, Luxury( Resource ),
Gold( Luxury ). Prices are dicts of {resource:amount}, where resource
can be something concrete like Gold, or a general group like Luxury
(which could be paid with Gold, but also Ivory, etc). Payments are in
dicts of {concrete-resource:amount}, and to verify correct payment I
iterate through them, matching concrete resources (via their parent)
to general price requirements like Luxury or Resource. I could avoid
referencing __bases__ by instead iterating through price and checking
issubclass(), but the logic is more complex.
And yes, I know this is a bit of an unorthodox use of classes. ;-)