name_mangling.py

#!/usr/bin/python3
# ====================================================================
#see: www.youtube.com/watch?v=0hrEaA3N3lk
#     Every Python dev falls for this (name mangling) 
# ====================================================================

class A:
    count   = 2
    _count  = 3
    __count = 4
    
    def __init__(self,x,y,z):
        self.count   = x
        self._count  = y
        self.__count = z

print()
print('----raw A------------------------------------------')
print('class A')
print(A.__dict__)

print()
print('====create object a1=2000==========================')

a1 = A(2000,3000,4000)
print()
print('a1(2000,3000,4000)  # obj created')

print()
print('----step 1-----------------------------------------')
print('class A')
print(A.__dict__)
print('----step 2-----------------------------------------')
print('object a1')
print(a1.__dict__)


a1.count   = -200
a1._count  = -300
a1.__count = -400
print()
print('a1.count  =-200')
print('a1._count =-300')
print('a1.__count=-400')

print()
print('----step 3-----------------------------------------')
print('class A')
print(A.__dict__)
print('----step 4-----------------------------------------')
print('object a1')
print(a1.__dict__)
print('---------------------------------------------------')