1. Properties of the class
成员变量
Creation of objects
创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法,句柄用于区分不同的对象,对象的属性和方法,与类中的成员变量和成员函数对应,obj = MyClass()创建类的一个实例,扩号对象,通过对象来调用方法和属性
Properties of the class
类的属性按使用范围分为公有属性和私有属性类的属性范围,取决于属性的名称,**共有属性**---在内中和内外都能够调用的属性**私有属性**---不能在内外贝类以外函数调用定义方式:以"__"双下划线开始的成员变量就是私有属性可以通过instance.__classname__attribute方式访问,内置属性--由系统在定义类的时候默认添加的由前后双下划线构成,如__dic__,__module__
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__ageren = People()ren.color = ‘白色人‘print ren.colorren.think()print ‘#‘*30print("People.color")print ren.__People__age ##测试时使用。如要调用 时,通过方法内调用 。
2. Methods of the class
成员函数类的方法方法的定义和函数一样,但是需要self作为第一个参数.类方法为: 公有方法 私有方法 类方法 静态方法公有方法:在类中和类外都都测调用的方法.私有方法:不测被类的外部调用模块,在方法前加个“__”c双下划线就是私有方法。self参数: 用于区分函数和类的方法(必须有一个self) self参数表示执行对象本身
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__age def test(self):self.think() # 内部调用jack = People()jack.test() #外部调用
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__agedef __talk(self):print "I am talking with Tom" def test(self):self.__talk() # 内部调用talk()jack = People()jack.test() #外部调用
Class method
Class method: A function that is processed by the Classmethod () function, can be called by a class, and can be called by an object (an inherited relationship).
静态方法:相当于“全局函数”,可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义静态方法, 静态方法没有self参数装饰器: @classmethod() @staticmethod()
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__agedef __talk(self):print "I am talking with Tom" def test(self):print ‘Testing....‘ cm = classmethod(test)jack = People()People.cm()
通过类方法类内的方法 ,不涉及的属性和方法 不会被加载,节省内存,快。
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__agedef __talk(self):print "I am talking with Tom" def test(): ##没有self 静态调用 会把所有的属性加载到内存里。print People.__age # 通过类访问内部变量 sm = staticmethod(test)jack = People()People.sm()
Methods for decorating the calling class:
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__age def __talk(self): print "I am talking with Tom" @classmethod #调用类的方法 def test(self): print ("this is class method") @staticmethod #调用类的方法 def test1(): print ("this is static method")jack = People()People.test()People.test1()
3. The built-in method of the class Python inner class:
所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界。例子:汽车是一个类,汽车的底盘轮胎也可以抽象为类,将其定义到汽车内中,而形成内部类,更好的描述汽车类,因为底盘轮胎是汽车的一部分。
Inner class instantiation method:
方法1:直接使用外部类调用内部类方法2:先对外部类进行实例化,然后再实例化内部类out_name = outclass_name()in_name = out_name.inclass_name()in_name.method()
#!/usr/bin/env python#-*-coding:utf-8-*-class People (object): color = ' yellow ' __age = #私有属性 C Lass Chinese (object): Print ("I am Chinese") def think (self): Self.color = "Black" print "I am a%s "% Self.color print (" I am a thinker ") Print Self.__age def __talk (self): print" I am talking With Tom ' @classmethod #调用类的方法 def Test (self): print ("The Is Class method") @staticmethod #调用类的方法 def test1 (): Print ("This is static method") Jack = People.chinese ()
#!/usr/bin/env python#-*-coding:utf-8-*-class People (object): color = ' yellow ' __age = #私有属性 C Lass Chinese (object): Name = "I am a Chinese." def think (self): Self.color = "BLACK" print "I am a%s"% Self.color print ("I am a Thinker") Print Self.__age def __talk (self): print ' I am talking with Tom ' @classmethod #调用类的方法 def Test (self): Print ("This is class method") @staticmethod #调用类的方法 def test1 (): Print ("The Is static method") ) Jack = People.chinese () #外部类调用内部类print jack.name #外部类调用内部类对象
另一种方法,外部类调用内部类对象#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 class Chinese(object): name ="I am a Chinese." def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__age def __talk(self): print "I am talking with Tom" @classmethod #调用类的方法 def test(self): print ("this is class method") @staticmethod #调用类的方法 def test1(): print ("this is static method")ren = People() #实例化外部类jack = ren.Chinese() #实例化内部类print jack.name #打印内部类属性或print People.Chinese.nameprint People.Chinese().name
Magic Method:
Str (self)
Constructors and destructors
constructor function:
用于初始化类的内部状态,Python提供的构造函数是__init__(): __init__():方法是可选的,如果不提供,python会给出一个默认的__init__方法。
Destructors:
用于释放对象占用的资源,python提供的析构函数是__del__(): __del__():也是可选的,如果不提供,则python会在后台提供默认析构函数。
Constructor __str__
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 class Chinese(object): name ="I am a Chinese." def __str__(self): return "This is People class" def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__age def __talk(self): print "I am talking with Tom" @classmethod #调用类的方法 def test(self): print ("this is class method") @staticmethod #调用类的方法 def test1(): print ("this is static method")ren = People() #实例化外部类print ren #默认执行__str__
__init__ (self) Initialization class:
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 class Chinese(object): name ="I am a Chinese." def __str__(self): return "This is People class" def __init__(self,c=‘white‘): #类实例化时自动执行 self.color = c self.think() def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__age def __talk(self): print "I am talking with Tom" @classmethod #调用类的方法 def test(self): print ("this is class method") @staticmethod #调用类的方法 def test1(): print ("this is static method")jack = People(‘green‘)ren = People() #实例化外部类print ren.color #通过对象访问属性是初始化后的值print People.color #通过类访问还是原来的值 [[email protected] 20180110]# python test1.py I am a black I am a thinker30blackyellow
destructor __del__ (): Releasing resources
#!/usr/bin/env python#-*- coding:utf-8 -*-class People(object): color = ‘yellow‘ __age = 30 #私有属性 class Chinese(object): name ="I am a Chinese." def __str__(self): return "This is People class" def __init__(self,c=‘white‘): #类实例化时自动执行 print ("initing...") self.color = c self.think() f = open(‘test.py‘) def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") print self.__age def __talk(self): print "I am talking with Tom" @classmethod #调用类的方法 def test(self): print ("this is class method") @staticmethod #调用类的方法 def test1(): print ("this is static method") def __del__(self): print ("del....") self.f.close()jack = People(‘green‘)ren = People() #实例化外部类print ren.color #通过对象访问属性是初始化后的值print People.color #通过类访问还是原来的值
Garbage collection mechanism:
Python uses a garbage collection mechanism to clean up objects that are no longer in use, and Python provides GC modules to release objects that are no longer in use. Python uses the "reference count" algorithm to handle recycling, which means that when an object is no longer referenced by another object within its scope, Python automatically clears the object. GC Module collect () can collect all pending objects (Gc.collect)
at once
#!/usr/bin/env python#-*-coding:utf-8-*-class People (object): color = ' yellow ' __age = #私有属性 class Chinese (object): Name = "I am a Chinese." def __str__ (self): Return "This is People class" Def __init__ (self,c= ' white '): #类实例化时自动执行 print ("Initi ng ... ") Self.color = C Self.think () F = open (' test.py ') def think (self): Self.colo r = "Black" print "I am a%s"% Self.color print ("I am a Thinker") Print Self.__age def __talk (self): print ' I am talking with Tom ' @classmethod #调用类的方法 def Test (self): print ("The Is class meth Od ") @staticmethod #调用类的方法 def test1 (): Print (" This is the static method ") def __del__ (self): Print ("Del ...") self.f.close () print gc.collect () If 0 is not recycled. Jack = people (' green ') ren = people () #实例化外部类print Ren.color #通过对象访问属性是初始化后的值print People.color #通过类访问 or the original value
Properties, methods, and built-in methods for classes in Python