Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from abc import ABC, abstractmethod
- class Shape(ABC): #superclass also Shape class is inheriting from ABC module
- @abstractmethod #decorator,it makes the methods below them abstract
- def area():pass
- @abstractmethod #decorator and we dont want the user to create an instance of shape class
- def perimeter(self):pass
- class Square(Shape):#subclass
- def __init__(self, side):
- self.__side = side
- def area(self):
- return self._side * self._side
- def perimeter(self):
- return self._side *4
- shape = Square(5)
- print(shape.area())
- print(shape.perimeter())
- OUTPUTS:
- AttributeError Traceback (most recent call last)
- <ipython-input-35-5ca981efe69b> in <module>
- 17
- 18 shape = Square(5)
- ---> 19 print(shape.area())
- 20 print(shape.perimeter())
- 21
- <ipython-input-35-5ca981efe69b> in area(self)
- 12 self.__side = side
- 13 def area(self):
- ---> 14 return self._side * self._side
- 15 def perimeter(self):
- 16 return self._side *4
- AttributeError: 'Square' object has no attribute '_side'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement