Class constants in python
Class constants in python
Since Horse
is a subclass of Animal
, you can just change
print(Animal.SIZES[1])
with
print(self.SIZES[1])
Still, you need to remember that SIZES[1]
means big, so probably you could improve your code by doing something like:
class Animal:
SIZE_HUGE=Huge
SIZE_BIG=Big
SIZE_MEDIUM=Medium
SIZE_SMALL=Small
class Horse(Animal):
def printSize(self):
print(self.SIZE_BIG)
Alternatively, you could create intermediate classes: HugeAnimal
, BigAnimal
, and so on. That would be especially helpful if each animal class will contain different logic.
You can get to SIZES
by means of self.SIZES
(in an instance method) or cls.SIZES
(in a class method).
In any case, you will have to be explicit about where to find SIZES
. An alternative is to put SIZES
in the module containing the classes, but then you need to define all classes in a single module.
Class constants in python
class Animal:
HUGE = Huge
BIG = Big
class Horse:
def printSize(self):
print(Animal.HUGE)