although Python It's an explanatory language , But it's object-oriented , Be able to program objects .

One 、 How to define a class

It's going on python Before object-oriented programming , Let's start with a few terms : class , Class object , Instance object , attribute , Functions and methods .

Class is the encapsulation of some things in the real world , Defining a class can be done in the following way :

class className:
block

Notice that there is a The colon , stay block You can define attributes and methods in the block . When a class is defined , A class object is generated . Class objects support two operations : Reference and instantiation . A reference operation is to call a property or method in a class through a class object , Instantiation is to produce an instance of a class object , Called instance objects . For example, it defines a people class :

class people: # Defines a class 
name = 'jack' # Defines an attribute
def printName(self): # Defines a method
print self.name

people After the class definition is completed, a global class object is generated , You can access the properties and methods in the class through the class object . When passed people.name( As for why you can directly access properties in this way, I will explain later , Just understand the concept of class object ) When I came to visit ,people.name Medium people Called class objects , This and C++ There's a difference in . Of course, you can also instantiate ,p=people( ), So there's a people Instance object of , You can also use instance objects p To access properties or methods (p.name).

Understand the class 、 After the difference between class objects and instance objects , Let's get to know Python Middle attribute 、 The difference between methods and functions .

The comments in the above code are very clear ,name Is an attribute ,printName( ) It's a method , A function bound to an object is called a method . Generally, functions defined in a class are bound to class objects or instance objects , So it's called a method ; Functions defined outside a class are not bound to objects , It's called a function .

Two 、 attribute

In a class, we can define some properties , such as :

 class people:
name = 'jack'
age = 12 p = people() # Create an object
print p.name,p.age # p.name Properties of reference objects

Defined a people class , It's defined in it name and age attribute , The default values are 'jack' and 12. After defining the class , Can be used to generate instantiated objects , This sentence p = people( ) An object is instantiated p, Then you can go through p To read properties . there name and age It's all public , Can be accessed directly outside the class through the object name , If you want to define it as private , You need to add 2 Underscores ' __'.

 class people:
__name = 'jack'
__age = 12 p = people()
print p.__name,p.__age

This program will report an error :

aaarticlea/png;base64,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" alt="" />

Prompt cannot find the property , Because private properties can't be accessed by object name outside the class . stay Python There is no such thing as C++ in public and private These keywords are used to distinguish public attributes from private attributes , It is distinguished by attribute naming , If the attribute name is preceded by 2 Underscores '__', Indicates that the attribute is private , Otherwise, it is a public property ( The same way , The method name is preceded by 2 An underscore indicates that the method is private , Otherwise it will be public ).

3、 ... and 、 Method

In the class, you can define some methods as needed , The definition method is def keyword , A method defined in a class will have at least one parameter ,, It is usually called 'self' As the parameter ( You can also use other names ), And it needs to be the first parameter . Here's an example :

 class people:
__name = 'jack'
__age = 12 def getName(self): # Define a method
return self.__name
def getAge(self):
return self.__age p = people()
print p.getName(),p.getAge()

aaarticlea/png;base64,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" alt="" />

Four 、 Class

stay Python There are some built-in methods in , There are some special aspects in the naming of these methods ( The name of the method is 2 Start with an underline and start with 2 End with an underline ). The most commonly used methods in class are construction method and deconstruction method .

Construction method __init__(self,....) Call... When the object is generated , It can be used for some initialization operations , You don't need to display to call , The system will execute by default . The constructor supports overloading , If the user does not redefine the construction method himself , The system automatically executes the default construction method .

destructor __del__(self) Called when the object is released , Support overload , You can do some operations to release resources inside , There's no need to show calls .

There are other built-in methods :

such as __cmp__( ), __len( )__ etc. , Please refer to this blog for specific usage :

http://www.cnblogs.com/simayixin/archive/2011/05/04/2036295.html

5、 ... and 、 Class properties 、 Instance attributes 、 Class method 、 Instance method and static method

Let's talk about class properties and instance properties first , In the previous example, we came into contact with class properties , seeing the name of a thing one thinks of its function , Class properties are properties owned by class objects , It is shared by instance objects of all class objects , There is only one copy in memory , For public class properties , It can be accessed through class objects and instance objects outside the class .

class people:
name = 'jack' # Public class properties
__age = 12 # Private class properties p = people() print p.name # correct
print people.name # correct
print p.__age # error , Private class properties cannot be accessed through instance objects outside the class
print people.__age # error , Private class properties cannot be accessed outside the class through class objects

Instance properties do not need to be defined in the class , such as :

class people:
name = 'jack' p = people()
p.age =12
print p.name # correct
print p.age # correct print people.name # correct
print people.age # error

Class objects outside of class people After instantiation , An instance object is generated p, then p.age = 12 This sentence is for you p Added an instance property age, The assignment is 12. This instance property is the instance object p Unique , Be careful , Class object people Don't have it ( So you can't access this through class objects age attribute ). Of course, you can also give age assignment .

class people:
name = 'jack' #__init__() It's built-in construction , Called automatically when an object is instantiated
def __init__(self,age):
self.age = age p = people(12)
print p.name # correct
print p.age # correct print people.name # correct
print people.age # error

If you need to modify class properties outside the class , Must be referenced by class object and then modified . If you reference through an instance object , An instance property with the same name will be generated , It's the instance properties that are modified in this way , Does not affect class properties , And then, if you refer to the property of the name through the instance object , Instance properties force class properties to be masked , That is, it refers to instance properties , Unless the instance property is deleted .

class people:
country = 'china' print people.country
p = people()
print p.country
p.country = 'japan'
print p.country # Instance properties block class properties with the same name
print people.country
del p.country # Delete instance properties
print p.country

Let's take a look at class methods 、 The difference between instance method and static method .

Class method : Is the method owned by the class object , You need a decorator "@classmethod" To identify it as a class method , For class methods , The first parameter must be a class object , General with "cls" As the first parameter ( Of course, you can use a variable with another name as its first parameter , But most people are used to 'cls' As the name of the first parameter , It's best to use 'cls' 了 ), It can be accessed through instance objects and class objects .

class people:
country = 'china' # Class method , use classmethod To embellish
@classmethod
def getCountry(cls):
return cls.country p = people()
print p.getCountry() # You can use instance object references
print people.getCountry() # You can reference... Through class objects

Class methods can also be used to modify class properties :

 class people:
country='china'
@classmethod
def getCountry(cls):
return cls.country @classmethod # Class method , use classmethod To embellish
def setCountry(cls,country):
cls.country=country p=people()
print p.getCountry() # You can use instance object references
print people.getCountry() # You can reference... Through class objects p.setCountry('japan')
print p.getCountry()
print people.getCountry()

Running results :

aaarticlea/png;base64,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" alt="" />

The results show that after modifying class properties with class methods , Access through class objects and instance objects has changed .

Example method : The most commonly defined member methods in a class , It has at least one parameter and must take the instance object as its first parameter , It is usually called 'self' As the first parameter ( Of course, you can take variables with other names as the first parameter ). Out of class, instance methods can only be called through instance objects , You can't call... In any other way .

class people:
country = 'china' # Example method
def getCountry(self):
return self.country p = people()
print p.getCountry() # correct , You can use instance object references
print people.getCountry() # error , Instance methods cannot be referenced through class objects

Static methods : You need a decorator "@staticmethod" To embellish , Static methods do not need to define multiple parameters .

class people:
country = 'china' @staticmethod
# Static methods
def getCountry():
return people.country print people.getCountry()

For class properties and instance properties , If you refer to a property in a class method , The property must be a class property , If you refer to a property in an instance method ( No change ), And there are class properties with the same name , In this case, if the instance object has an instance property with that name , The instance property masks the class property , That is, it refers to instance properties , If the instance object does not have an instance property with that name , Class properties are referenced ; If you change a property in an instance method , And there are class properties with the same name , In this case, if the instance object has an instance property with that name , Then modify the instance properties , If the instance object does not have an instance property with that name , An instance property with the same name is created . Want to modify class properties , If it's out of class , It can be modified through class objects , If it's in a class , Only in class methods .

It can be seen from the definition forms of class methods, instance methods and static methods , The first parameter of a class method is a class object cls, Then through the cls It must refer to the properties and methods of class objects ; The first parameter of the instance method is the instance object self, Then through the self It's possible to refer to class properties 、 It can also be instance properties ( This needs to be analyzed ), But in the case of class properties and instance properties with the same name , Instance properties have higher priority . No additional parameters need to be defined in static methods , So if you reference a class property in a static method , Must refer to... Through class objects .

python Learning notes 15( object-oriented programming ) More articles about

  1. python Learning notes 7 object-oriented programming

    One . summary Process oriented : Write base code from top to bottom according to business logic Functional expression : Encapsulate a function code into a function , No need to write again in the future , Just call the function object-oriented : Classify and encapsulate functions , Let's develop " Faster, better, stronger ..." ...

  2. python Learning notes ( 7、 ... and ): object-oriented programming 、 class

    One . object-oriented programming object-oriented --Object Oriented Programming, abbreviation oop, It's a kind of programming idea . Before we talk about object orientation , Let's talk about the programming paradigm first , Programming paradigm, how do you program , To achieve a ...

  3. Python Object oriented programming of learning notes ( 3、 ... and )Python Class magic method

    python There are some methods in the class that have two underscores before and after , These functions are called magic methods . These methods have special uses , Some don't need our own definition , Some can achieve more magical functions through some simple definitions I mainly divide them into three parts , The following is also divided into ...

  4. python Learning notes 1 -- Object oriented programming, advanced programming 1

    Speaking of advanced, it's actually something basic , But flexible and familiar use will certainly greatly improve the quality of the code The first thing to document is object-oriented flexibility , And how to control its flexibility , She allows you to add properties and methods to instances , Allows you to add properties and methods to a class , When defining a class ...

  5. python Learning notes 1 -- Object oriented programming classes and instances

    Because there is a certain foundation before , therefore python The general acceptance of classes in is faster , Like any other language , python It's also the abstraction of transactions through classes , Everything is the object , Otherwise, how to say that programmers do not lack objects . Get down to business ,python The declaration of a class in is cl ...

  6. python Automated test learning notes -7 object-oriented programming , class , Inherit , Instance variables , mail

    object-oriented programming (OOP) The term : class TestClass(object):   val1 = 100       def __init__(self):     self.val2 = 200   ...

  7. C++ Primer Learning notes _67_ object-oriented programming -- Transformation and inheritance 、 Replication control and inheritance

    object-oriented programming -- Transformation and inheritance . Replication control and inheritance I. Transformation and inheritance introduction : Because every derived class object includes a base class part , So you can perform operations on derived class objects just like you do with base class objects . For the pointer / quote , Can be derived class object pointer ...

  8. javascript Object oriented programming of learning notes ( One ): The realization of the class

    ~~ Think it's one thing , It's one thing to do , It's another thing to write it out ~~ all the time , be engaged in C++ Is more of a VC++ A little more , From process oriented to object oriented , Let me be right about OO I have a preference for , It's always exciting to abstract an objective law , adopt ...

  9. C++ Primer Learning notes _69_ object-oriented programming -- Class scope in the case of inheritance

    object-oriented programming -- Class scope in the case of inheritance introduction : In the case of inheritance , The scope of the derived class is nested in the base class scope : Suppose the name cannot be determined in the scope of a derived class , Just look up the definition of the name in the peripheral base class scope . It is this hierarchical nesting of class scopes that makes ...

Random recommendation

  1. Oracle The data dictionary

    The data dictionary - brief introduction Oracle The name of a data dictionary consists of a prefix and a suffix , Use underline "_" Connect , Its meaning is as follows : ● DBA_: Contains all the object information of the database instance . ● V$_: Dynamic view of the current instance , ...

  2. ADO.NET Learning Series ( Two )

    This time I use ADO.NET To insert a piece of data , To database . The main use is stored procedure . I don't want to use it every time SQL The form of the text has changed , There's no progress --- First of all , I will use the database script for this exercise , post : USE maste ...

  3. Go: using a pointer to array

    The following is not a pointer to an array , It's a pointer to Slice I'm having a little play with google's Go language, and I've run into someth ...

  4. By matching the binding select option Text value Fuzzy matching

    // By matching the binding select option Text value Fuzzy matching $(".class option:contains(' Text value ')").attr("selected" ...

  5. Git Use summary

    svn The transition to git technological process . I've been using git svn scene , For some of the problems encountered , And often use the function to summarize : 1.git svn exit : git svn clone "svn access " 2.git ...

  6. Brief introduction of shortest path algorithm (Dijkstra Algorithm ,A* Algorithm ,D* Algorithm )

    According to the Drew As we know, the most important application of the shortest path algorithm is the computer network routing algorithm , Robots explore the way , Traffic route navigation , Artificial intelligence , Game design and so on . The U.S. Mars probe core pathfinding algorithm is used D*(D Star) Algorithm . The shortest path is divided into static state by calculation ...

  7. python establish udp Server and client

    1.udp Server side server from socket import * from time import ctime HOST = '' PORT = 8888 BUFSIZ = 1024 ADDR ...

  8. Confluence 6 Found in creating XML Backup error

    The error may be caused by the sudden inaccessibility of the database . If you see errors in your log   'Couldn't backup database data' , This guide will help you correct this mistake . We strongly recommend that you back up Confl ...

  9. JS_ Altitude 4. Variable , Scope and memory issues (1)

    1. Values of basic and application types ECMAScript Variables can contain two different data types of values : Base type value —— Simple data segments .(5 Basic data types , Visit by value , Because you can manipulate the actual values stored in variables .) Reference type value —— many ...

  10. java Development of ——[ Interface callback ]

    One . The meaning and purpose of callback 1. What is callback ? Generally speaking , There is a certain calling relationship between modules , From the point of view of call mode , It can be divided into three categories : A synchronous invocation . Asynchronous calls and callbacks . Synchronous call is a kind of blocking call , That's in the function A By writing functions in the function body B Of ...