When you call self.x - it looks first for instance-level variable, instantiated as self.x, and if not found - then looks for Class.x. So you can define it on class level, but override it on instance level.

A widely-used example is to use a default class variable with possible override into instance: