subclass_classmethod.py 573 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # Calling an inherited classmethod
  2. class Base:
  3. @classmethod
  4. def foo(cls):
  5. print(cls.__name__)
  6. try:
  7. Base.__name__
  8. except AttributeError:
  9. print("SKIP")
  10. raise SystemExit
  11. class Sub(Base):
  12. pass
  13. Sub.foo()
  14. # overriding a member and accessing it via a classmethod
  15. class A(object):
  16. foo = 0
  17. @classmethod
  18. def bar(cls):
  19. print(cls.foo)
  20. def baz(self):
  21. print(self.foo)
  22. class B(A):
  23. foo = 1
  24. B.bar() # class calling classmethod
  25. B().bar() # instance calling classmethod
  26. B().baz() # instance calling normal method