1. python 類方法中變數如何使用
data=gdal.Open(file_path)
改成 data=gdal.Open(self.file_path)
__init__會初始化實例, self.file_path = fl 是把 fl 的值賦到 實例裡面,你訪問 file_path,這個根本沒定義過,肯定報錯。
抽空補一下基礎吧,還是非常重要的。我現在也還在基礎中掙扎
2. Python類變數和成員變數使用中有哪些注意事項
之前在用python開發一個項目,發現一個bug,就是同由一個類生成的兩個實例之間的數據竟然會相互影響,這讓我非常不解。後來聯想到java的類有類變數也有實例變數,因此翻閱了相關資料,發現python也有類似的類變數和實例變數
!
3. Python類里的類變數和實例對象變數的區別
類變數也叫靜態變數,也就是在變數前加了static
的變數;
實例變數也叫對象變數,即沒加static
的變數;
區別在於:
類變數和實例變數的區別在於:類變數是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變後的結果;而實例變數則屬對象私有,某一個對象將其值改變,不影響其他對象;
例:
public
class
A{
static
int
a
=
0;
//類變數
private
int
b
=
0;
//實力變數
}
public
class
B{
public
void
main
(String[]
args){
A
a1
=
new
A();
A
a2
=
new
A();
a1.a
=
3;
//
等同於
A.a
=
3;
a1.b
=
4
;
System.out.println(a2.a);
//結果為3
//類變數是針對所有對象的,所以a1改變a,a2的a也改變
System.out.println(a2.b);
//結果為0
//實例只改變自身的,所以a1對象的b改變,不影響對象a2的b變數
}
}
4. Python類變數什麼時候
python的類變數,顧名思義,類變數是指跟類的變數,而實例變數,指跟類的具體實例相關聯的變數,具體體現為self.x 等。實際要注意的類變數和實例變數之間的關聯。和類方法可以通過類也可以通過實例訪問類似,類變數既可以通過實例也可以通過類來訪問。
來看舉例:
class Person:
name="aaa"
p1=Person()
p2=Person()
p1.name="bbb" #這里修改了p1.name的引用,使其不再指向類變數,而成為一個實例變數print p1.name # bbbprint p2.name # aaaprint Person.name # aaa
類變數就是供類使用的變數,實例變數就是供實例使用的.
5. Python 如何實現改變類中的一個變數使得類中與之相關的變數的值都更新
你對OO太不熟了,先學基礎吧。你想寫的是這個:
classMat():
def__init__(self,t):
self.temp=t
defpro(self):
returnself.temp
defmain():
a=Mat(5)
a.temp=10
print(a.pro())
if__name__=='__main__':
main()
6. python 類變數和實例變數的區別
類變數定義在類的定義之後,實例變數則是以為self.開頭。例如:
class Foo(object):
val1= 'aa' #類變數
def __init__(self):
self.val2 = 'bb' #實例變數
val3= 'cc' #順便設置的變數不知道屬於什麼變數
print self.__class__.val1 #實例對象訪問類變數的另一種方法
實例對象可以訪問類變數和實例變數
但是類對象卻只能訪問類變數,在實例方法中的變數都不能訪問。
7. python 類變數會轉換成實例變數嗎
其實,從名字就能看出來,Python的類變數和實例變數的區別:
類變數:
是可在類的所有實例之間共享的值(也就是說,它們不是單獨分配給每個實例的)。例如下例中,num_of_instance 就是類變數,用於跟蹤存在著多少個Test 的實例。
實例變數:
實例化之後,每個實例單獨擁有的變數。
[python] view plain
class Test(object):
num_of_instance = 0
def __init__(self, name):
self.name = name
Test.num_of_instance += 1
if __name__ == '__main__':
print Test.num_of_instance
t1 = Test('jack')
print Test.num_of_instance
t2 = Test('lucy')
print t1.name , t1.num_of_instance
print t2.name , t2.num_of_instance
結果如下:
>>>
0
1
jack 2
lucy 2
>>>
8. Python里類變數和實例變數的區別
其實,從名字就能看出來,Python的類變數和實例變數的區別:
類變數:
是可在類的所有實例之間共享的值(也就是說,它們不是單獨分配給每個實例的)。例如下例中,num_of_instance 就是類變數,用於跟蹤存在著多少個Test 的實例。
實例變數:
實例化之後,每個實例單獨擁有的變數。
[python] view plain
class Test(object):
num_of_instance = 0
def __init__(self, name):
self.name = name
Test.num_of_instance += 1
if __name__ == '__main__':
print Test.num_of_instance
t1 = Test('jack')
print Test.num_of_instance
t2 = Test('lucy')
print t1.name , t1.num_of_instance
print t2.name , t2.num_of_instance
9. python類的全局變數
全局變數,是一個相對的概念,對於整個程序而言,有可以在整個程序的任何代碼塊中都能被訪問的變數,被稱作全局變數。也有在類中能夠被該類的任何代碼塊都能訪問到的變數,也被稱作全局變數。所以這里是一個相對的概念。代碼定義的fly變數以及構造方法中的long變數都是全局變數,因為在long之前加了一個self的前綴,所有在整個類中,該long變數也是全局變數,至少在該類中的任何地方都可以訪問到該變數。全局變數被當做類的一個屬性來存儲,所以可以說直接通過.的訪問方式直接訪問,訪問如下:
class G():
fly = False #類中的全局變數
def __init__(self):
selg._age = 1 #加一個下劃線,是一種不成文的規定,意思是該變數是私有變數
self.long = 2 #普通變數
self.__width = 3 #有兩個下劃線,是一種「真」私有變數
def run(self):
r = 4 #局部變數
print("I am running!.")
10. python如何在一個類中訪問另一個類的變數
1234def aaa(): s = 5 return sprint aaa()
或者:
12345def aaa(): global s s = 5aaa()print s
要在函數外部訪問函數的內部變數,要麼使用return將其返回到外部,要麼用global定義為全局變數。推薦前一種。
def只是定義函數,你還沒有調用和執行該函數。此外,要在控制台輸出,你可以在函數內部寫上print s+3 ,然後調用函數aaa()。
或者定義一個類:
1234class aaa: s = 5b = aaa #初始化一個類的實例print b.s #當然,你也可以直接使用aaa.s