On Sun, 09 Jul 2006 03:51:56 -1000, Steven D'Aprano <[EMAIL PROTECTED]> wrote:
> On Sun, 09 Jul 2006 04:24:01 +0000, crystalattice wrote: > >> I've finally figured out the basics of OOP; I've created a basic >> character >> creation class for my game and it works reasonably well. Now that I'm >> trying to build a subclass that has methods to determine the rank of a >> character but I keep getting errors. >> >> I want to "redefine" some attributes from the base class so I can use >> them >> to help determine the rank. However, I get the error that my base class >> doesn't have the dictionary that I want to use. I've tried several >> things >> to correct it but they don't work (the base class is called "Character" >> and the subclass is called "Marine"): > > Without seeing your class definitions, it is hard to tell what you are > doing, but I'm going to take a guess: you're defining attributes in the > instance instead of the class. > > E.g. > > class Character(): > def __init__(self): > self.attrib_dict = {} > > attrib_dict is now an instance attribute. Every instance will have one, > but the class doesn't. > > I'm thinking you probably want something like this: > > class Character(): > attrib_dict = {} > def __init__(self): > pass > > Now attrib_dict is an attribute of the class. However, it also means that > all instances will share the same values! Here's one possible solution to > that: > > class Character(): > default_attribs = {} > def __init__(self): > self.attribs = self.default_attribs.copy() > > Now there is one copy of default character attributes, shared by the > class > and all it's instances, plus each instance has it's own unique set of > values which can be modified without affecting the defaults. > > > Hope this clears things up for you. > > Yes, I believe your right (I left my code at work so I can't verify directly). I did initialize attrib_dict in the __init__method, not outside it as a class member. I'll try your suggestion and see what happens. Thanks. -- Python-based online RPG in development based on the Colonial Marines from "Aliens": http://www.colonialmarinesrpg.com Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list