xxxxxxxxxx
# convention: _<name> for protected and __<name> for private
class MyClass:
def __init__(self):
# Protected
# No access outside of the class or subclasses
self._this_is_protected = True
# Private
# No access outside of the class
self.__this_is_private = True
# Note:
# Private and protected members can be accessed outside of the class using python name mangling.
xxxxxxxxxx
# Python program to
# demonstrate protected members
# Creating a base class
class Base:
def __init__(self):
# Protected member
self._a = 2
# Creating a derived class
class Derived(Base):
def __init__(self):
# Calling constructor of
# Base class
Base.__init__(self)
print("Calling protected member of base class: ",
self._a)
# Modify the protected variable:
self._a = 3
print("Calling modified protected member outside class: ",
self._a)
obj1 = Derived()
obj2 = Base()
# Calling protected member
# Can be accessed but should not be done due to convention
print("Accessing protedted member of obj1: ", obj1._a)
# Accessing the protected variable outside
print("Accessing protedted member of obj2: ", obj2._a)
xxxxxxxxxx
class Computer:
def __init__(self):
self.__maxprice = 900
def sell(self):
print("Selling Price: {}".format(self.__maxprice))
def setMaxPrice(self, price):
self.__maxprice = price
c = Computer()
c.sell()
# change the price
c.__maxprice = 1000
c.sell()
# using setter function
c.setMaxPrice(1000)
c.sell()
xxxxxxxxxx
# Python program to
# demonstrate private members
# Creating a Base class
class Base:
def __init__(self):
self.a = "GeeksforGeeks"
self.__c = "GeeksforGeeks"
# Creating a derived class
class Derived(Base):
def __init__(self):
# Calling constructor of
# Base class
Base.__init__(self)
print("Calling private member of base class: ")
print(self.__c)
# Driver code
obj1 = Base()
print(obj1.a)
# Uncommenting print(obj1.c) will
# raise an AttributeError
# Uncommenting obj2 = Derived() will
# also raise an AtrributeError as
# private member of base class
# is called inside derived class
xxxxxxxxxx
# encapsulation in python
class Circle:
def __init__(self, radius):
self.__radius = radius # Private attribute
def area(self):
return 3.14 * self.__radius ** 2
# Creating a Circle object
circle = Circle(5)
# Accessing via a public method
print(circle.area()) # Output: 78.5
image.mefiz.com
https://github.com/MominIqbal-1234
xxxxxxxxxx
# illustrating public members & public access modifier
class pub_mod:
# constructor
def __init__(self, name, age):
self.name = name;
self.age = age;
def Age(self):
# accessing public data member
print("Age: ", self.age)
# creating object
obj = pub_mod("Jason", 35);
# accessing public data member
print("Name: ", obj.name)
# calling public member function of the class
obj.Age()