============================================================
 CLASS VS INSTANCE ATTRIBUTES — LIBRARY BOOK TRACKER - Demo Run
============================================================

Books before any created: 0

--- Instance attributes ---
  Dune by Frank Herbert [IN]
  1984 by George Orwell [IN]

--- Class attribute shared across instances ---
  b1.library_name = Community Library, b2.library_name = Community Library
  After Book.library_name changed:
  b1.library_name = Central City Library, b2.library_name = Central City Library  <- both updated

--- Alternative constructor: from_string (classmethod) ---
  Brave New World by Aldous Huxley [IN]

--- ISBN validation (staticmethod, no instance/class data needed) ---
  is_valid_isbn('9780441013593') = True
  is_valid_isbn('not-an-isbn') = False
  is_valid_isbn('123456789') = False

--- Checkout/return with guard conditions ---
  'Dune' checked out.
  'Dune' is already checked out.
  'Dune' returned.
  '1984' was not checked out.

--- Class attribute access: via class vs via instance ---
  Book.total_books = 3
  b1.total_books   = 3  (same value, accessed through an instance)

============================================================
 Assignment: checked_out_count + days_overdue
============================================================
  checked_out_count(all_books) = 1
  days_overdue(due_date_day=10, current_day=17) = 7
  days_overdue(due_date_day=10, current_day=5) = 0  (not overdue -> 0)
