

{"id":125778,"date":"2023-11-14T15:56:45","date_gmt":"2023-11-14T10:26:45","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=125778"},"modified":"2024-02-29T10:09:20","modified_gmt":"2024-02-29T04:39:20","slug":"python-program-on-abstract-class","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/","title":{"rendered":"Python Program on Abstract Class"},"content":{"rendered":"<p>Abstract classes in Python provide a foundational framework for building robust and structured object-oriented programs. Unlike regular classes, abstract classes cannot be instantiated directly, serving as blueprints for derived classes to implement specific methods. This feature facilitates a more disciplined approach to code design, enforcing a blueprint for common functionalities while allowing flexibility for concrete implementations in derived classes.<\/p>\n<p>In this article, we will explore the practical aspects of abstract classes in Python, unraveling their significance in fostering code modularity and reusability and enforcing a clear hierarchy among classes.<\/p>\n<h2>Topic Explanation:<\/h2>\n<p>Abstract classes offer a key abstraction mechanism in Python, providing a blueprint for common functionalities that must be implemented by derived classes. By defining abstract methods within an abstract class, developers establish a contract that ensures specific behaviors are present in any class inheriting from it. This enforces a consistent structure across related classes, promoting a more organized and modular codebase.<\/p>\n<p>Additionally, abstract classes contribute to the creation of robust class hierarchies, allowing for the implementation of shared functionalities at an abstract level, reducing redundancy and enhancing code maintainability. Through the exploration of abstract classes in Python, developers gain insights into a powerful tool for building extensible and scalable software architectures.<\/p>\n<h3>Prerequisite:<\/h3>\n<ul>\n<li><strong>Object-Oriented Programming (OOP) Understanding:<\/strong><\/li>\n<\/ul>\n<p>Familiarity with the basic concepts of object-oriented programming, including classes, objects, and inheritance.<\/p>\n<ul>\n<li><strong>Python Class and Method Concepts:<\/strong><\/li>\n<\/ul>\n<p>Knowledge of how to define classes and methods in Python.<\/p>\n<ul>\n<li><strong>Understanding of Inheritance:<\/strong><\/li>\n<\/ul>\n<p>Awareness of how inheritance works in Python, including the ability of derived classes to inherit from base classes.<\/p>\n<ul>\n<li><strong>Basic Python Syntax:<\/strong><\/li>\n<\/ul>\n<p>Proficiency in basic Python syntax, including function definitions, variable assignments, and class instantiation.<\/p>\n<ul>\n<li><strong>Implementation of Methods:<\/strong><\/li>\n<\/ul>\n<p>Understanding of how methods are implemented within classes and how they contribute to the overall functionality of a program.<\/p>\n<h3>Code With Comments:<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Importing Abstract Base Class (ABC) and abstractmethod\r\nfrom abc import ABC, abstractmethod\r\n\r\n# Abstract Class Definition\r\nclass Button(ABC):\r\n    \r\n    # Abstract Method Declaration\r\n    @abstractmethod\r\n    def click(self):\r\n        pass\r\n    \r\n    # Non-Abstract Method\r\n    def display(self):\r\n        print(\"This is Non-abstract method\")\r\n\r\n# Concrete Class Mycolor inheriting from Button\r\nclass Mycolor(Button):\r\n    \r\n    # Implementation of Abstract Method\r\n    def click(self):\r\n        print(\"Color is Red\")\r\n\r\n# Concrete Class Myphoto inheriting from Button\r\nclass Myphoto(Button):\r\n    \r\n    # Implementation of Abstract Method\r\n    def click(self):\r\n        print(\"This is my photo\")\r\n\r\n# Instances Creation\r\nM1 = Mycolor()   # Instance of Mycolor (Button 1)\r\n# M2 = Myphoto()   # Instance of Myphoto (Button 2)\r\n\r\n# Method Calls on Instances\r\nM1.click()        # Calling the click method for Mycolor\r\nM1.display()      # Calling the display method for Mycolor\r\n\r\n# M2.click()      # Calling the click method for Myphoto<\/pre>\n<p><strong>Output:<\/strong><br \/>\nColor is Red.<br \/>\nThis is Non-abstract method.<\/p>\n<h3>Code Explanation:<\/h3>\n<p><strong>Importing Libraries:<\/strong><\/p>\n<ul>\n<li>from abc import ABC, abstractmethod imports the Abstract Base Class (ABC) and the abstract method decorator.<\/li>\n<\/ul>\n<p><strong>Abstract Class Definition:<\/strong><\/p>\n<ul>\n<li>class Button(ABC): defines an abstract class named Button, inheriting from ABC.<\/li>\n<\/ul>\n<p><strong>Abstract Method Declaration:<\/strong><\/p>\n<ul>\n<li>@abstractmethod decorator marks the click method as abstract, requiring concrete implementations in derived classes.<\/li>\n<\/ul>\n<p><strong>Non-Abstract Method:<\/strong><\/p>\n<ul>\n<li>def display(self): defines a non-abstract method within the abstract class.<\/li>\n<\/ul>\n<p><strong>Concrete Class Mycolor:<\/strong><\/p>\n<ul>\n<li>class Mycolor(Button): defines a concrete class Mycolor that inherits from the abstract class Button.<\/li>\n<\/ul>\n<p><strong>Implementation of Abstract Method:<\/strong><\/p>\n<ul>\n<li>def click(self): in Mycolor provides the concrete implementation of the abstract click method.<\/li>\n<\/ul>\n<p><strong>Concrete Class Myphoto:<\/strong><\/p>\n<ul>\n<li>class Myphoto(Button): defines another concrete class Myphoto inheriting from Button.<\/li>\n<\/ul>\n<p><strong>Instances Creation:<\/strong><\/p>\n<ul>\n<li>M1 = Mycolor() creates an instance M1 of Mycolor (Button 1).<\/li>\n<li>M2 = Myphoto() creates an instance M2 of Myphoto (Button 2)<\/li>\n<\/ul>\n<p><strong>Method Calls on Instances:<\/strong><\/p>\n<ul>\n<li>M1.click() calls the concrete click method for Mycolor.<\/li>\n<li>M1.display() calls the non-abstract display method for Mycolor.<\/li>\n<li>M2.click() would call the click method for Myphoto.<\/li>\n<\/ul>\n<h3>Conclusion:<\/h3>\n<p>In conclusion, the provided Python code exemplifies the use of abstract classes and abstract methods. The abstract class Button outlines a blueprint with an abstract method click and a non-abstract method display. Concrete classes Mycolor and Myphoto inherit from Button and provide specific implementations for the abstract method. The instances M1 and M2 showcase polymorphism, allowing the abstract method to be called on different concrete instances. The output demonstrates that the abstract method click is successfully implemented in the concrete class Mycolor, emphasizing the effectiveness of abstract classes in defining common structures while leaving specific implementations to derived classes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abstract classes in Python provide a foundational framework for building robust and structured object-oriented programs. Unlike regular classes, abstract classes cannot be instantiated directly, serving as blueprints for derived classes to implement specific methods.&#46;&#46;&#46;<\/p>\n","protected":false},"author":581,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46],"tags":[28883,10333,28884,28626,28882],"class_list":["post-125778","post","type-post","status-publish","format-standard","hentry","category-python","tag-abstract-class-in-python","tag-python","tag-python-abstract-class","tag-python-practical","tag-python-program-on-abstract-class"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python Program on Abstract Class - DataFlair<\/title>\n<meta name=\"description\" content=\"Abstract classes offer a key abstraction mechanism in Python, providing a blueprint for common functionalities that must be implemented by derived classes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Program on Abstract Class - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Abstract classes offer a key abstraction mechanism in Python, providing a blueprint for common functionalities that must be implemented by derived classes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-14T10:26:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-29T04:39:20+00:00\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python Program on Abstract Class - DataFlair","description":"Abstract classes offer a key abstraction mechanism in Python, providing a blueprint for common functionalities that must be implemented by derived classes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/","og_locale":"en_US","og_type":"article","og_title":"Python Program on Abstract Class - DataFlair","og_description":"Abstract classes offer a key abstraction mechanism in Python, providing a blueprint for common functionalities that must be implemented by derived classes.","og_url":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2023-11-14T10:26:45+00:00","article_modified_time":"2024-02-29T04:39:20+00:00","author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/c187795dc82ab948373cca526df7c445"},"headline":"Python Program on Abstract Class","datePublished":"2023-11-14T10:26:45+00:00","dateModified":"2024-02-29T04:39:20+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/"},"wordCount":576,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"keywords":["abstract class in python","Python","python abstract class","python practical","python program on abstract class"],"articleSection":["Python Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/","url":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/","name":"Python Program on Abstract Class - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"datePublished":"2023-11-14T10:26:45+00:00","dateModified":"2024-02-29T04:39:20+00:00","description":"Abstract classes offer a key abstraction mechanism in Python, providing a blueprint for common functionalities that must be implemented by derived classes.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/python-program-on-abstract-class\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Python Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/python\/"},{"@type":"ListItem","position":3,"name":"Python Program on Abstract Class"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/c187795dc82ab948373cca526df7c445","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team provides high-impact content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. We make complex concepts easy to grasp, helping learners of all levels succeed in their tech careers.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam6\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/125778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/581"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=125778"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/125778\/revisions"}],"predecessor-version":[{"id":134247,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/125778\/revisions\/134247"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=125778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=125778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=125778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}