Re: Inheritance error: class Foo has no attribute "bar"
- From: Steven D'Aprano <steve@xxxxxxxxxxxxxxxxxxxxxx>
- Date: Sun, 09 Jul 2006 23:51:56 +1000
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.
--
Steven.
.
- Follow-Ups:
- Re: Inheritance error: class Foo has no attribute "bar"
- From: crystalattice@xxxxxxxxx
- Re: Inheritance error: class Foo has no attribute "bar"
- From: crystalattice
- Re: Inheritance error: class Foo has no attribute "bar"
- References:
- Inheritance error: class Foo has no attribute "bar"
- From: crystalattice
- Inheritance error: class Foo has no attribute "bar"
- Prev by Date: HTTPBasicAuthHandler doesn't work
- Next by Date: Re: can't pickle instancemethod objects
- Previous by thread: Re: Inheritance error: class Foo has no attribute "bar"
- Next by thread: Re: Inheritance error: class Foo has no attribute "bar"
- Index(es):
Relevant Pages
|