Python-類變量,成員變量,靜態變量,類方法,靜態方法,實例方法,普通函數


#coding:utf-8

class class_name(object): class_var = 'I am a class variable' #類變量 def __init__(self): self.instance_var = 'I am a instance varibale' #成員變量(實例變量) def instance_method(self, formal_parameter): local_var_in_function = formal_parameter #實例方法局部變量 self.local_var_also_in_function = formal_parameter #實例方法局部變量 def ordinary_function(formal_parameter): print "I am an ordinary function, I can't vist class var and intance var" print self.instance_var #報錯,因此普通函數無法訪問成員函數 print clacc_var#報錯,因此普通函數無法訪問類變量 @classmethod def class_method(cls, formal_parameter): #類方法 print 'I am class method, I can visit class var and instance var' print 'I am class method, I am modifying the instance var' cls.instance_var = formal_parameter print cls.instance_var print 'I am class method, I am modifying the class var' class_var = formal_parameter print class_var @staticmethod def static_method(formal_parameter): print 'I am static method, I am the Adopted son(干兒子) for this class!!' print "I can't modify anything in the class " #print class_var #print self.instance_var print 'Get a class instance' class_instance = class_name() print '\r' print "My name is class_instance, I can call class_method, " \ "statics_method, instance_method and instance_method, but I can't call ordinary_function" print "I can show you:" print '\r' class_instance.class_method('class method is calling!!') print '\r' class_instance.static_method('static method in calling!!') print '\r' class_instance.instance_method('instance method is calling!!') print '\r' print 'class var is calling!!' print class_instance.class_var print '\r' print 'instance var is calling!!' print class_instance.instance_var print '\r' print 'Get a class!!' print '\r' print 'My name is class_name, I can call class_method, statics_method, instance_method, instance_method, and ordinary_function' print "I can show you:" print '\r' class_name.class_method('class method is calling!!') print '\r' class_name.static_method('static method in calling!!') print '\r' #class_name.instance_method("instance method can't be calling!!") print '\r' print 'class var is calling!!' print class_name.class_var print '\r' print 'instance var is calling!!' print class_name.instance_var print 'END!!'

Result:

Get a class instance

 
         

My name is class_instance, I can call class_method, statics_method, instance_method and instance_method, but I can't call ordinary_function
I can show you:

 
         

I am class method, I can visit class var and instance var
I am class method, I am modifying the instance var
class method is calling!!
I am class method, I am modifying the class var
class method is calling!!

 
         

I am static method, I am the Adopted son(干兒子) for this class!!
I can't modify anything in the class

 
         


class var is calling!!
I am a class variable

 
         

instance var is calling!!
I am a instance varibale

 
         

Get a class!!

 
         

My name is class_name, I can call class_method, statics_method, instance_method, instance_method, and ordinary_function
I can show you:

 
         

I am class method, I can visit class var and instance var
I am class method, I am modifying the instance var
class method is calling!!
I am class method, I am modifying the class var
class method is calling!!

 
         

I am static method, I am the Adopted son(干兒子) for this class!!
I can't modify anything in the class

 
         


class var is calling!!
I am a class variable

 
         

instance var is calling!!
class method is calling!!
END!!

 

類變量:

        類定義內部定義的變量(愚見,可以認為類內部沒有self開頭定義的變量,可以認為是類變量)

e.g. class_name中的class_var = 'I am a class variable' #類變量

 

成員變量:

         類定義內部__init__函數內以self開頭定義的變量

          

e.g. self.instance_var = 'I am a instance varibale'  #成員變量(實例變量)

 

 

靜態變量:

          因為Python是動態語言,不存在完全靜態的變量,這個概念查閱相關資料后認為指的就是類內部定義的類變量(歡迎指正)

類方法:

          類內部定義的以@classmethod裝飾的函數是類方法,類方法的調用關系可以通過print后的表述得知。

e.g. 
    @classmethod
    def class_method(cls, formal_parameter): #類方法
        print 'I am class method, I can visit class var and instance var'

        print 'I am class method, I am modifying the instance var'
        cls.instance_var = formal_parameter
        print cls.instance_var

        print 'I am class method, I am modifying the class var'
        class_var = formal_parameter
        print class_var

 

靜態方法:

          類內部定義的以@staticmethod裝飾的函數,類方法的調用關系可以通過print后的表述得知。

e.g.
    @staticmethod
    def static_method(formal_parameter):
        print 'I am static method, I am the Adopted son(干兒子) for this class!!'

        print "I can't modify anything in the class "
        #print class_var
        #print self.instance_var

實例方法:

          類內部定義的沒有裝飾器且第一個參數為self的函數,類方法的調用關系可以通過print后的表述得知。

e.g.
 def instance_method(self,  formal_parameter):
        local_var_in_function = formal_parameter    #實例方法局部變量
        self.local_var_also_in_function = formal_parameter  #實例方法局部變量

普通函數:

          類內部定義的既沒有裝飾器,也沒有參數self的函數,類方法的調用關系可以通過print后的表述得知。

e.g.
def ordinary_function(formal_parameter):
        print "I am an ordinary function, I can't vist class var and intance var"
        print self.instance_var #報錯,因此普通函數無法訪問成員函數
        print clacc_var#報錯,因此普通函數無法訪問類變量

[1]. http://www.cnblogs.com/kex1n/p/5979366.html

[2]. http://www.cnblogs.com/funfunny/p/5892212.html

[3]. http://blog.csdn.net/linda1000/article/details/8710161

[4]. http://blog.csdn.net/gzhouc/article/details/46785797

[5]. http://blog.csdn.net/xhw88398569/article/details/48976001

[6]. http://www.cnblogs.com/Simon-xm/p/3890942.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM