- @classmethod
Class methods accessing class attributes
"total" is an attribute that belongs to the class. We can access it using Date.total. We can create a @classmethod to access it,
but actually we can access it from the outside even without the class method, just using the "class object"
examples/oop/mydate3/mydate.py
class Date: total = 0 def __init__(self, Year, Month, Day): self.year = Year self.month = Month self.day = Day Date.total += 1 def __str__(self): return 'Date({}, {}, {})'.format(self.year, self.month, self.day) def set_date(self, y, m, d): self.year = y self.month = m self.day = d @classmethod def get_total(class_object): print(class_object) return class_object.total
examples/oop/mydate3/run.py
from mydate import Date d1 = Date(2013, 11, 22) print(d1) print(Date.get_total()) print(Date.total) print('') d2 = Date(2014, 11, 22) print(d2) print(Date.get_total()) print(Date.total) print('') d1.total = 42 print(d1.total) print(d2.total) print(Date.get_total()) print(Date.total)
Date(2013, 11, 22) <class 'mydate.Date'> 1 1 Date(2014, 11, 22) <class 'mydate.Date'> 2 2 42 2 <class 'mydate.Date'> 2 2