What students Say?
Here are the stdudents...
Access modifiers control who can access variables or methods. In Python, they are conventions, not strict rules.
self.name = "Kiran"class A:
def __init__(self):
self.name = "Kiran"
obj = A()
print(obj.name) # ✅ Accessible
self._salary = 50000class A:
def __init__(self):
self._salary = 50000
obj = A()
print(obj._salary) # ⚠️ Works, but discouraged
self.__password = "1234"class A:
def __init__(self):
self.__password = "1234"
obj = A()
print(obj.__password) # ❌ Error
print(obj._A__password) # ✅ Works due to name mangling
| Name Style | Meaning |
|---|---|
name |
Public |
_name |
Protected |
__name |
Private |
__name to _ClassName__name.class A:
def __init__(self):
self.__secret = "hidden"
a = A()
print(dir(a)) # _A__secret
print(a._A__secret) # ✅ Works
class A:
def __init__(self):
self.x = 10
self._y = 20
self.__z = 30
a = A()
print(dir(a)) # Shows: ['_A__z', '_y', 'x', '__init__', ...]
print(a1.__dir__())
class abc:
def class1(self):
self._a = 10
a1 = abc()
print(abc._a) # ❌ Error
Fix:
a1.class1()
print(a1._a) # ✅ Works
| Term | Meaning | Example | Notes |
|---|---|---|---|
| Public | Accessible anywhere | self.name | Safe |
| Protected | For subclass only | self._name | Not enforced |
| Private | Inside class only | self.__name | Name mangled |
| Name Mangling | _ClassName__name | obj._A__secret | Obfuscation |
| dir() | List attributes | dir(obj) | Shows mangled names |
Here are the stdudents...
Empower your tech dreams with us. Get in touch!




