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: :

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 .

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 :

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 .

Object oriented features

About the four characteristics : encapsulation 、 abstract 、 Inherit 、 polymorphic , You can see the summary in the figure below :

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 .

give the result as follows :

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 .

Python More articles on design patterns and object-oriented programming

  1. python Basics —— object-oriented programming

    python Basics —— object-oriented programming object-oriented programming ——Object Oriented Programming, abbreviation OOP, It's a kind of programming idea .OOP Take the object as the basic unit of the program , An object contains data and operations of data ...

  2. Python Object oriented programming learning

    Before you know it , Learned python The idea of object oriented programming . Today we're going to talk about the idea of object-oriented programming . seeing the name of a thing one thinks of its function , object-oriented , It's object-oriented , This is not about your girlfriend in real life , Your wife , Your lover , In the world of programming ...

  3. Python: object-oriented programming 3 Custom class ( There are updates )

    Python: object-oriented programming 3  Custom class ( There are updates ) ️ The main content of this paper is to Data model Extraction of relevant knowledge points and learning records .( The content comes from documents and some web tutorial cases ) ️: This connection points to < smooth python&g ...

  4. python Basics - object-oriented programming

    One . Three programming paradigms Programming paradigm is the methodology of programming , Identify a programming style Three programming paradigms : 1. Process oriented programming 2. Functional programming 3. object-oriented programming Two . Programming evolution 1. Programming starts out as disorganized, unstructured , Write instructions step by step from simple control flow ...

  5. python Object oriented programming of

    1. Object oriented introduction : The world all things , All can be classified The world all things , All are objects As long as it's an object , It must belong to some kind As long as it's an object , There must be attributes 2. Several features of object orientation : class class : A class is an abstraction of a class of objects with the same properties , ...

  6. Python( object-oriented programming —1)

    class tst: l=[] x=1 a=tst() b=tst() a.l.append('a') b.l.append('b') a.x='a' b.x='b' print(a.l,a.x) # ...

  7. python Object - oriented programming

    Object oriented programming is a paradigm of program , It looks at programs as calls to different objects , A model of the real world . The basic idea of object-oriented programming , Classes and instances . Class is used to define abstract objects , Instances are created according to the definition of the class . stay python Among them, we ...

  8. Read a text Python Object - oriented programming

    I've read a lot about object-oriented programming on the Internet before , It's not enough , So I decided to write one by myself . object-oriented :Object Oriented Programming, abbreviation OOP, Object oriented programming . class (Class) ...

  9. python Study —— object-oriented programming

    About python object-oriented programming , Please refer to :

  10. Python Basics — Fundamentals of object-oriented programming

    Catalog 1. Fundamentals of object-oriented programming 2. Define classes and create objects 3. init() Method 4. Magic methods 5. Access visibility issues 5. practice 1. Fundamentals of object-oriented programming Objects consist of a set of data structures and methods for handling them (obj ...

Random recommendation

  1. Spark Source code compilation and in YARN Up operation WordCount example

    When learning a new language , I think we are all "Hello World" Program starts , Similarly , A typical example of distributed computing framework is WordCount Program , Come into contact with Hadoop I'm sure everyone knows how to use MapRedu ...

  2. Redis Learning notes ~ A distributed Pub/Sub Pattern

    Back to directory redis There are a lot of , This time with it pub/sub Publish and subscribe I chose StackExchange.Redis, Publish and subscribe you should be very clear , First, a subscriber , Subscribe to a service , The service performs some processing ( can ...

  3. Linux Under the development of common simulation Http get and post request

    1.get request curl ""       If it's here URL Point to a file or a picture can be directly downloaded to the local curl -i "htt ...

  4. C# Cookie Tool class

    /// <summary> /// Cookies assignment /// </summary> /// <param name="strName"> Primary key & ...

  5. ASP.NET WEB API Route debugging and execution tracking in

    Route debugging RouteDebugger It's debugging ASP.NET MVC A good tool for routing , stay ASP.NET WEB API The corresponding ones in are WebApiRouteDebugger ,Nuget install Inst ...

  6. Leetcode#126 Word Ladder II

    Original address Since it's the shortest path , You can consider moving back or searching extensively . It's unrealistic for this problem to translate dictionary directly , Because there are so many words in the dictionary . You can only choose to search extensively . The idea is also very intuitive , from start or end Start , Keep adding all the accessible words , Until the most ...

  7. Android Learning letters ( One ) Application Architecture

    1. resource list Android List of supported resources Objective   record The resource type describe res/anim  XML  This directory is used to store frames (frame). Animation or patching (tweened) Animation files res/drawable   ...

  8. stagefright frame ( 5、 ... and )-Video Rendering

    AwesomePlayer::onVideoEvent Except through OMXCodec::read Get the decoded data , It's also necessary to put this information (mVideoBuffer) Pass on to video renderer, So that you can draw on the screen ...

  9. HDU 5821 Ball

    Record the final position of each position . And then sort each operation . #pragma comment(linker, "/STACK:1024000000,1024000000") #include ...

  10. PentestBox stay win10 It's hard to get tools in

    PentestBox Detailed installation process : In the use of PentestBox There was a problem that the tools couldn't be opened , Finally I saw an old ...