Advanced Lesson 3
Advanced Object-Oriented Programming
Chapter 4: Class attributes and methods
Class attributes
So far, you have mainly implemented instance attributes, where you can access attributes via self inside the class definition or via an instance of the class from outside the definition.
1 2 3 4 5 6 7 | |
You can actually also define a class attribute. Here, the attribute belongs to the class (e.g. Person) and not to the class instance (e.g. the object lecturer refers to).
The attribute is bound to the class, and not to the instance. The value is shared among all instances of the class.
You can access a class attribute either with ClassName.attribute or instance_name.attribute. It is probably easier to illustrate this with an example.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
In this example, Person.count acts as a ‘global’ counter that keeps track of how many instances of Person have been created.
You can see how count is bound to Person, rather than to the instances (although you can still access it via the instance).
Class attributes are also useful if you want to define a constant, for example Person.SPECIES.