OK, check following codes first:
class DemoClass(): def __init__(self): #### I really want to know if self.Counter is thread-safe. self
self.Counter is an instance variable, so each thread has a copy.
self.Counter
If you declare the variable outside of __init__(), it will be a class variable. All instances of the class will share that instance.
__init__()