Class attributes
Attributes specified in the class declaration are called class attributes. Consider the following example:
class Newton: tol = 1e-8 # this is a class attribute def __init__(self,f): self.f = f # this is not a class attribute ....
Class attributes are useful for simulating default values and can be used if values have to be reset:
N1 = Newton(f) N2 = Newton(g)
Both instances have an attribute, tol
, with the value initialized in the class definition:
N1.tol # 1e-8 N2.tol # 1e-8
Altering the class attribute automatically affects all the corresponding attributes of all instances:
Newton.tol = 1e-10 N1.tol # 1e-10 N2.tol # 1e-10
Altering tol
for one instance does not affect the other instance:
N2.tol = 1.e-4 N1.tol # still 1.e-10
But now N2.tol
is detached from the class attribute. Changing Newton.tol
no longer has any effect on N2.tol
:
Newton.tol = 1e-5 # now all instances of the Newton classes have 1e-5 N1.tol # 1.e-5 N2.tol # 1e-4 but not...