2014-09-06 80 views
0

一些概念上的疑惑。在此代碼:Python範圍的疑惑

​​

輸出如下:

here in A 
flying 1 
flying 2 
here in main 
another flying 
flying/here in B 

問題:

1 .-爲什麼有當沒有A實例"here in A"獲取打印? (沒有警告/錯誤通知)

2.-什麼是"flying"東西的範圍?他們都打印。我不明白Python的解析規則。

3.-與1.-相同爲什麼當沒有B的實例時,「B中的這裏」被打印出來?

4.-有沒有像默認的類構造函數?

很抱歉的混亂,但一個「類似的代碼」決不會編譯,例如,C++

回答

3

1:打印語句運行時定義的類時,以同樣的方式靜態類變量將沒有被分配一個實例是必要的。如果您希望它們僅在創建實例時運行,則將該語句與__init__方法一起使用,否則在類定義中定義一個實例可以調用的另一個函數。

2:Python實際上並不需要像java和其他語言的main()函數,因此整個文件都會運行以便打印飛行的東西。唯一不運行的部分在函數定義內,如「內置B」。

3:請1.

4:我不知道你的意思究竟是什麼,但你可能指的是object()構造:

在Python o = object()相當於

Object o = new Object();在Java的。