Preface
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 .
summary
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
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 , ...
- 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) # ...
- 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 ...
- 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) ...
- python Study —— object-oriented programming
About python object-oriented programming , Please refer to : https://blog.csdn.net/zhoudaxia/article/details/23341261
- 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
- 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 ...
- 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 ...
- Linux Under the development of common simulation Http get and post request
1.get request curl "http://www.baidu.com" If it's here URL Point to a file or a picture can be directly downloaded to the local curl -i "htt ...
- C# Cookie Tool class
/// <summary> /// Cookies assignment /// </summary> /// <param name="strName"> Primary key & ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- HDU 5821 Ball
Record the final position of each position . And then sort each operation . #pragma comment(linker, "/STACK:1024000000,1024000000") #include ...
- PentestBox stay win10 It's hard to get tools in
PentestBox Detailed installation process :http://www.cnblogs.com/ESHLkangi/p/8336398.html In the use of PentestBox There was a problem that the tools couldn't be opened , Finally I saw an old ...