Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法

属性分为实例属性与类属性this

方法分为普通方法,类方法,静态方法spa

 

一:属性:对象

  尽可能把须要用户传入的属性做为实例属性,而把同类都同样的属性做为类属性。实例属性在每创造一个实例时都会初始化一遍,不一样的实例的实例属性可能不一样,不一样实例的类属性都相同。从而减小内存。内存

  1:实例属性:ci

    最好在__init__(self,...)中初始化string

    内部调用时都须要加上self.it

    外部调用时用instancename.propertynameclass

  2:类属性:test

    在__init__()外初始化方法

    在内部用classname.类属性名调用

    外部既能够用classname.类属性名又能够用instancename.类属性名来调用

  3:私有属性:

    1):单下划线_开头:只是告诉别人这是私有属性,外部依然能够访问更改

    2):双下划线__开头:外部不可经过instancename.propertyname来访问或者更改

      实际将其转化为了_classname__propertyname

二:方法

  1:普通类方法:

    def fun_name(self,...):

      pass

    外部用实例调用

  2:静态方法:@staticmethod            

      不能访问实例属性!!!   参数不能传入self!!!

      与类相关可是不依赖类与实例的方法!!

  3:类方法:@classmethod

      不能访问实例属性!!!   参数必须传入cls!!!

      必须传入cls参数(即表明了此类对象-----区别------self表明实例对象),而且用此来调用类属性:cls.类属性名

  *静态方法与类方法均可以经过类或者实例来调用。其两个的特色都是不可以调用实例属性

  

  e.g1:

  1. class A:  
  2.     member = "this is a test."  
  3.     def __init__(self):  
  4.         pass  
  5.  
  6.     @classmethod  
  7.     def Print1(cls):  
  8.         print "print 1: ", cls.member  
  9.           
  10.     def Print2(self):  
  11.         print "print 2: ", self.member  
  12.             
  13.          
  14.     @classmethod      
  15.     def Print3(paraTest):  
  16.         print "print 3: ", paraTest.member  
  17.     @staticmethod  
  18.     def print4():  
  19.         print "hello"  

 

总结:类属性与类方法是类固有的方法与属性,不会由于实例不一样而改变,写他们的目的是减小多实例时所创造出来的内存空间,加快运行速度。

相关文章
相关标签/搜索