class A(object):
	val = 10
	
	def __init__(self, val):
		self.val = val
	
	def method(self):
		return self.val
	
	@classmethod
	def class_method(cls):
		return cls.val
	
	@classmethod
	def change_class_val(cls, val):
		cls.val = val
		
	@classmethod
	def change_class_method(cls, func):
		cls.class_method = func
		
a = A(5)
aa = A(5)
print(a.method())
print(a.class_method())

a.change_class_val(9)
print(a.class_method())
print(aa.class_method())

A.change_class_val(7)
print(a.class_method())
print(aa.class_method())

A.val = 8
print(a.class_method())
print(aa.class_method())

A.change_class_method(lambda cls: "new method!")
print(a.class_method())
print(aa.class_method())