2015-10-16 71 views
0

我知道如何在Python如何聲明對象,而不是創建新對象?

obj = MyClass() 

創建一個新的變量,但是這實際上將定義一個新的變量命名爲obj其他不僅僅是宣稱的MyClass的變量。

在Java中我們聲明使用MyClass obj;和定義MyClass obj = new MyClass();

我們可以實現在Python一樣嗎?

+0

在使用它們之前不需要聲明東西 – Holloway

+1

在Python中沒有對象的情況下*「聲明變量」的*點*是什麼?它們實際上只是*名稱*,標記在/指向對象的「指針」上。你可以做例如'obj = None',但沒有什麼意義。閱讀http://nedbatchelder.com/text/names.html – jonrsharpe

+0

您聲明瞭一些編譯器進行檢查的變量。 Python不需要編譯。所以有必要做這樣的聲明。 – luoluo

回答

2

在Python中沒有「聲明對象」這樣的東西。如果要在範圍內創建名稱,那麼您必須將綁定到將其綁定到某個對象(現有或新建)。

somename = someobj 
1

Python基於強大的動態鴨子打字。因此,變量沒有類型,也不需要預先定義。

如果您想定義變量前期,您可以做類似:

my_string_var = None 
1

Python有沒有明顯的變量聲明。變量只是通過賦值來創建的,並且當它們超出範圍時它們會自動銷燬。

剛:

obj = SomeObject() 

當談到定義一個類:

舊風格:

class MyClass: 
    pass 

新風格:

class MyClass(object): 
    pass 
0

Python沒有變量在語言suc中h作爲C++或Java。它只有名稱。名稱是對現有對象的引用。

與變量不同,它不包含類型信息或類似的東西;所有這些信息都存儲在實際的對象上。沒有要引用的對象的名稱不會包含任何信息。因此,宣稱僅僅是的名稱是毫無意義的;隨後,你不能這樣做。

經常需要的東西實際上是有一個明確指的名稱未初始化的信息;例如,一個對象可能不得不從外部來源獲取。在這種情況下,您應該使用明確的哨兵值 - 通常,None是合適的。

the_boss = None 
for person in sorted(people, key=random.random()): 
    if the_boss = None: 
    the_boss = person 
    else: 
    person.set_boss(the_boss)