Python design pattern object oriented programming

python design pattern object oriented


This article is based on the geek time king contest 《 Beauty of design pattern 》 Make a summary and own understanding .
When it comes to object-oriented programming , As a qualified Pythoner, It can be said that it's easy to come by . After all, Python in “ Everything is an object ” Well , If people say you don't know object-oriented programming at all , Or don't understand object orientation at all , That might get your abuse , At the end of the day , Do you really understand object oriented ? Try to answer the following questions :

  • The definition of object-oriented programming is ?Python Why object oriented programming languages ?Python Everything in the universe is an object. What is the specific form of expression ?
  • What are the four features of object orientation ? stay Python Do you have all these four points in the book ? How does this work ?

Tips : If the answer to the above question is clear 、 Very clear , That article can be skipped , If you don't feel clear , That article will give you code help more or less !

Introduction to design mode

Before we talk about object-oriented programming , Let's look at design patterns first , Design patterns are mainly composed of programming paradigms 、 Design principles 、 Design patterns constitute , The details are as follows: :
 Insert picture description here
There are a lot of concepts in Turin , But the initial grasp of , Just have a general impression .

Talk about object orientation

Object oriented history

What is object-oriented , From history , We know Python The official announcement is 1991 year ,Linux The official release is also 1991 year ,Java The official announcement is 1995 year ,Go The official announcement is 2009 year , and object-oriented The concept of historical development is :1960 Year of simula The concept of class and object is proposed for the first time , And then 70 Programming language of the s Smalltalk For the first time, object-oriented concept is used , It can be seen that the concept of object-oriented was put forward early , And with the development of software , Most subsequent languages became object-oriented languages , Is there a process oriented language ? yes , we have ,C Language is a typical process oriented language .
If you are interested, you can read Wikipedia , Learn about the history of these languages .

  • object-oriented - Wikipedia
  • Python- Wikipedia
  • Java- Wikipedia
  • Linux- Wikipedia
  • Go- Wikipedia
Object oriented concept

object-oriented , namely object-oriented, It is subdivided into object-oriented analysis 、 Object oriented design 、 object-oriented programming , namely OOA(Analysis)、OOD(Design)、OOP(programming).
If you read Wikipedia , Maybe it's still fuzzy , Let's know the key words through the figure below : Programming paradigm 、 Contains properties and methods 、 Is an instance of a class 、 The basic unit of a program 、 The purpose is to improve the expansibility and flexibility of the software . That sentence is : Object oriented is a programming paradigm , Take class and object as basic unit , Through encapsulation 、 abstract 、 polymorphic 、 Inherit these four characteristics ( Not a strong requirement ) To achieve code design , The purpose is to improve the maintainability of software 、 Extensibility 、 Reusability . Of course, the above is my personal words , Not professional , But the meaning is right .
 Insert picture description here
that Python Why is Object oriented programming language , Obviously , It provides class and object features to organize code , It also has four characteristics , Naturally, it is . But it's not an object-oriented programming language without four features ? Obviously there is no reference definition , With the development of software , Many languages are divorced from the four characteristics , such as Java Although we support inheritance , But it doesn't have much inheritance ; such as Go Just give up inheriting such features , and Java and Go There's more interface This interface feature , stay Python Li does not support , But all three are object-oriented programming languages .

Everything is object

We often talk about Python Everything is object , How to understand this sentence ? It's simple , stay Python When we want to construct a class object , It's all about inheritance object Precondition , So the judge “ Creation ” Is it the object , Just judge whether it belongs to the object , The concept of everything here is very broad , The more common ones are : Numbers 、 character string 、 Boolean 、 Function as an example , The result is as follows :
 Insert picture description here
Why are they all object types ? Let's take Boolean values as an example , adopt dir There are a lot of properties and methods in it ( Here's the picture ), Then these methods can't come out of thin air , So it's all inherited , Then it's clearer , When we use variables to refer to numbers 、 String and so on , In fact, one object after another is constructed , These objects have magical methods that enable them to support a series of operations , such as __lt__ So that it has a relatively small capacity , such as __eq__ So that it has the ability of equal judgment .
 Insert picture description here

Object oriented features

About the four characteristics : encapsulation 、 abstract 、 Inherit 、 polymorphic , You can see the summary in the figure below :
 Insert picture description here
Python Nature supports four characteristics , I used to be vague about encapsulation and abstraction , Both encapsulate abstract common code , And then provide it to other method calls , This understanding is one-sided , Because the meaning of the two is very different . Encapsulation is used to hide implementation and protect data , such as Python We often define private types in classes to be called by external programs ( Here's the picture ), Here you can see a amount to Java Of public keyword , Is to allow any call to ; and _a It is Pythoner Rio's established private method , If the pycharm such ide Wave line will be used to prompt the user that it is an illegal reference ; If it is __a, It's equivalent to Java Of private, If an external call ide It will be marked with yellow to indicate an error .
 Insert picture description here
give the result as follows :
 Insert picture description here
As for abstraction , The broad sense is to extract common code , Methods for external exposure ; The narrow sense of understanding is the concept of interface , Only the methods to be exposed are included in the interface class , Without revealing the specific implementation , That is to say “ Programming based on interfaces rather than implementation ”. It is a pity that , stay Python The interface feature is not provided in , If you're fuzzy about the interface , You can search for interface classes interface, I believe I will learn a lot of information . but Python through duck-typing And abstract base classes to implement extra abstraction , This follow-up article introduces in detail .
In addition, inheritance and polymorphism are the basic syntax , I won't elaborate here .


That's all for this article , Although it's all about the foundation , But I believe that if you finish reading it, there will still be some harvest .

本文为[one billion seven hundred and sixty-three million three hundred]所创,转载请带上原文链接,感谢

  1. Mandatory conversion of Python data type
  2. Django reported an error: 'key' ID 'not found in' xxx '. Choices are: xxx'
  3. Python 400 sets of large video, starting from the right direction to learn, a complete set to you
  4. 只需十四步:从零开始掌握Python机器学习(附资源)
  5. Just 14 steps: Master Python machine learning from scratch (resources attached)
  6. Python|文件读写
  7. 安利一个Python界神奇得网站
  8. Python | file reading and writing
  9. Amway is a marvelous website in Python world
  10. 第二热门语言:从入门到精通,Python数据科学简洁教程
  11. The second popular language: from introduction to mastery, python data science concise tutorial
  12. 以我的亲身经历,聊聊学python的流程,同时推荐学python的书
  13. With my own experience, I'd like to talk about the process of learning Python and recommend books for learning python
  14. 以我的亲身经历,聊聊学python的流程,同时推荐学python的书
  15. With my own experience, I'd like to talk about the process of learning Python and recommend books for learning python
  16. Django url 路由匹配过程
  17. Django URL routing matching process
  18. 强者一出,谁与争锋?与Python相比,C++的运行速度究竟有多快?
  19. Who will fight against the strong? How fast is C + + running compared with Python?
  20. python 学习体会
  21. Experience of learning Python
  22. python7、8章
  23. Chapter 7 and 8 of Python
  24. python bool和str转换
  25. python——循环(for循环、while循环)及练习
  26. python变量和常量命名、注释规范
  27. python自定义异常捕获异常处理异常
  28. python 类型转换与数值操作
  29. python 元组(tuple)和列表(list)区别
  30. 解决python tkinter 与 sleep 延迟问题
  31. python字符串截取操作
  32. Python bool and STR conversion
  33. Python -- loop (for loop, while loop) and Practice
  34. Specification for naming and annotating variables and constants in Python
  35. Python custom exception capture exception handling exception
  36. Python type conversion and numerical operation
  37. The difference between tuple and list in Python
  38. Solve the delay problem of Python Tkinter and sleep
  39. Python string interception operation
  40. Python 100天速成中文教程,GitHub标星7700
  41. Python 100 day quick Chinese course, GitHub standard star 7700
  42. 以我的親身經歷,聊聊學python的流程,同時推薦學python的書
  43. With my own experience, I'd like to talk about the process of learning Python and recommend books for learning python
  44. python爬虫获取起点中文网人气排行Top100(快速入门,新手必备!)
  45. Python crawler to get the starting point of Chinese network popularity ranking Top100 (quick start, novice necessary!)
  46. 【Python常用包】itertools
  47. Itertools
  48. (国内首发)最新python初学者上手练习
  49. (国内首发)最新python初学者上手练习
  50. (first in China) the latest practice for beginners of Python
  51. (first in China) the latest practice for beginners of Python
  52. (数据科学学习手札104)Python+Dash快速web应用开发——回调交互篇(上)
  53. (data science learning notes 104) Python + dash rapid web application development -- callback interaction (Part 1)
  54. (数据科学学习手札104)Python+Dash快速web应用开发——回调交互篇(上)
  55. (data science learning notes 104) Python + dash rapid web application development -- callback interaction (Part 1)
  56. (資料科學學習手札104)Python+Dash快速web應用開發——回撥互動篇(上)
  57. (materials science learning notes 104) Python + dash rapid web application development -- callback interaction (Part 1)
  58. Python OpenCV 图片高斯模糊
  59. Python OpenCV image Gaussian blur
  60. Stargan V2: converse image synthesis for multiple domains reading notes and Python code analysis