【python】區域性變數,全部變數,類變數,例項變數,類方法,例項方法,靜態方法的使用
阿新 • • 發佈:2018-11-17
一:區域性變數
函式內部的變數名如果第一次出現,即被視為定義一個區域性變數,不管全域性域中有沒有用到該變數名,函式中使用的將是區域性變數,區域性變數只能在作用域內使用,也就是函式內部使用
二:全域性變數
在模組中使用,其在函式和類的外面定義的定義的變數。如果函式中沒有定於相同變數名的區域性變數,則在函式中使用的該變數是全域性變數。全域性變數可以在全域性的作用域使用
三:類變數
定義在類內,但不在方法和函式內,類變數也稱為靜態變數。類變數顧名思議是所以該類的例項所共有的,也是類內所以方法所共有的。
類內訪問格式:類名.類變數 或者self.類變數(不建議後面這種,因為後面這種的訪問形式已經預設將類類變數轉為例項變量了)
四:例項變數
顧名思義只能為這個例項使用,不能給其他例項使用。定義在方法中的變數,用 self 繫結到例項上,只作用於當前例項的類。
類內訪問格式:self.例項變數
類外訪問格式:例項名.例項變數
五:self介紹:
類的方法與普通的函式只有一個特別的區別——它們必須有一個額外的第一個引數名稱,但是在呼叫這個方法的時候你不為這個引數賦值,Python會提供這個值。這個特別的變數指物件本身,按照慣例它的名稱是self。雖然你可以給這個引數任何名稱,但是 強烈建議 你使用self這個名稱。
class Name(): def add(self,a,b):這裡定義是一個name類的例項,然後在呼叫add()方法,但是隻傳入兩個引數。實際上此時self的作用就是等價於傳入add(a,'zhang','yu').此時方法中所以self將是例項化的物件。return a+b a=Name() a.add('zhang','yu')
六:類方法
第一個引數必須傳入預設類,也就是cls。前面必須加@classmethod修飾
七:靜態方法
與普通函式和格式一樣,沒有指定引數,與普通函式的區別就是靜態方法定義在類內的。前面加@staticmethod修飾
八:類方法
最常見的方法就是例項方法,必須傳入引數self。
例項如下:
import numpy as np
globalVariable1=10
globalVariable2=20
globalVariable3=30
class AAA():
one="我是靜態變數(或者叫類變數),可以被類和例項呼叫" #在類內,在類的方法外,在類的例項化物件中是公用的,可以屬於所以例項進行使用
def __init__(self):
self.two="hello,world" #在類的方法內
self.one="類變數當例項變數使用,此時已經遮蔽掉類變數就像是區域性變數遮蔽全域性變數一樣"
def foo(self):
there="我是區域性變數,只能在區域性作用域中使用"
self.there="我是例項變數,只能被例項呼叫不能被類呼叫,在類內訪問形式是self.例項變數" #類的例項變量表示只屬於這個例項
global globalVariable1 #globals申明下,此處使用的是全域性變數
globalVariable1=100
globalVariable2=200 #當只有全域性變數,又有區域性變數時,區域性變數遮蔽全域性變數
a=globalVariable3+300 #當只有全域性變數時,函式內使用全域性變數值
print('globalVariable1',globalVariable1)
print('globalVariable2=',globalVariable2)
print('a=',a)
print(there)
print('AAA.one=',AAA.one) #類內使用類變數是類名.類變數
def add(self,a,b):
return a+b
@staticmethod #靜態方法
def staticmethod(): #引數無要求
print("我是靜態方法")
@classmethod
def classmethod(cls): #引數一般為cls
print("我是類方法")
a=AAA()
print(a.one) #由於在類外使用類的例項.例項變數,所以此時one是例項變數使用
print(AAA.one) #類外用類名.類的變數 訪問類變數
print(a.two)
print(a.foo())
print(a.there) #在類外部,用 例項名.例項變數 的形式訪問例項變數。
結果如下:
類變數當例項變數使用,此時已經遮蔽掉類變數就像是區域性變數遮蔽全域性變數一樣
我是靜態變數(或者叫類變數),可以被類和例項呼叫
hello,world
globalVariable1 100
globalVariable2= 200
a= 330
我是區域性變數,只能在區域性作用域中使用
AAA.one= 我是靜態變數(或者叫類變數),可以被類和例項呼叫
None
我是例項變數,只能被例項呼叫不能被類呼叫,在類內訪問形式是self.例項變數