CH7 Python ObjectOriented
CH7 Python ObjectOriented
J. Merhej
Outline
Classes Inheritance
Defining classes Print an object
Using classes issubclass()
Encapsulation
isinstance()
Inheritance and Subclasses
is operator
Variables
Multiple inheritance
Instance variables
Private variables Creating your own
Class variables exceptions
Class built-in functions Cisco: MODULE 3: OBJECT-
Methods ORIENTED PROGRAMMING
Inner life of classes and
objects
Introspection and Reflection
You cannot see it from the outside world. This is how Python implements the
encapsulation concept.
for i in range(5):
class AddingStack(Stack): stack_object.push(i)
def __init__(self): print(stack_object.get_sum())
Stack.__init__(self)
self.__sum = 0 for i in range(5):
print(stack_object.pop())
def get_sum(self):
return self.__sum
example_object_1 = ExampleClass()
example_object_2 = ExampleClass(2)
example_object_3 = ExampleClass(4)
print(example_object_1.__dict__, example_object_1.counter)
print(example_object_2.__dict__, example_object_2.counter)
print(example_object_3.__dict__, example_object_3.counter) --
{'_ExampleClass__first': 1} 3 {'_ExampleClass__first': 2} 3
{'_ExampleClass__first': 4} 3
example_object = ExampleClass(1)
example_object = ExampleClass(1) print(example_object.a)
print(example_object.a)
print(hasattr(example_object, 'b'))
try: print(hasattr(ExampleClass, ‘a'))
print(example_object.b)
except AttributeError:
pass 1
False
--1 False
obj_1 = Classy("object")
obj = Classy()
print(obj_1.var) - ‘object’ obj.var = 3
obj.method() 2 3
obj = Classy()
print(obj.__dict__)
print(Classy.__dict__)
TRY IT
class SuperTwo:
pass
def printBases(cls):
print('( ', end='')
for x in cls.__bases__:
print(x.__name__, end=' ')
print(')')
printBases(SuperOne)
printBases(SuperTwo)
printBases(Sub) ( object ) ( object ) ( SuperOne SuperTwo )
obj = Sub()
class Sub(Super):
def __init__(self, name): print(obj.subVar)
Super.__init__(self, name) print(obj.supVar)
obj = Sub("Andy")
print(obj)
class SuperB: 10 11
var_b = 20 20 21
def fun_b(self):
return 21
obj = Sub()
print(obj.var_a, obj.fun_a())
print(obj.var_b, obj.fun_b())
class Level2(Level1):
200 201
var = 200
def fun(self):
return 201
class Level3(Level2):
pass
obj = Level3()
print(obj.var, obj.fun())
class TooMuchCheeseError(PizzaError):
def __init__(self, pizza, cheese, message):
Pizza ready!
PizzaError.__init__(self, pizza, message)
too much cheese : 110
self.cheese = cheese
no such pizza on the
menu : mafia
def make_pizza(pizza, cheese):
if pizza not in ['margherita', 'capricciosa', 'calzone']:
raise PizzaError(pizza, "no such pizza on the menu")
if cheese > 100:
raise TooMuchCheeseError(pizza, cheese, "too much
cheese")
print("Pizza ready!")
String Operations