OK, check following codes first:
class DemoClass(): def __init__(self): #### I really want to know if self.Counter is thread-safe. self
No, it is not thread safe - the two threads are essentially modifying the same variable simultaneously. And yes, the solution is one of the locking mechanisms in the threading module.
threading
BTW, self.Counter is an instance variable, not a class variable.
self.Counter