2011-04-26 32 views
0

比方說,我有兩個文件是這樣的:Acessing對象

TestClass.py

class Test: 
    variable = None 

    def __init__(self, value): 
     self.variable = value 

__main__.py

from TestClass import Test 
TestObject = Test(123) 

做好以下工作,但我不」很喜歡它。想要找到一種方法來做到這一點,而不必將對象作爲參數傳遞。

access.py

def testFunction(TestObject): 
    print TestObject.variable 

任何想法?

不管怎麼說,謝謝大家的閱讀:)

編輯:謝謝你到目前爲止的答案。名字只是一個例子,在許多不同的文件中導入相同的模塊將意味着內存中的不同對象執行相同的功能。我希望在任何其他模塊中訪問 .py中的對象,而不在內存中具有不同的副本。

+1

你試過導入嗎? – 2011-04-26 19:25:02

+4

你的源文件是否真的叫做'__main __。py'?這看起來非常規。 – 2011-04-26 19:31:40

+0

爲什麼你想訪問這個對象而不是複製它?難道你不能簡單地將對象的一個​​副本存儲在'access.py'中,然後引用它? – erbridge 2011-04-27 01:43:20

回答

0

正如一些評論者指出,這裏的解決方案是導入。

正如邁克所說,導入不會複製任何東西。

test.py

import test2 
print test2.dog 

test2.py

dog = "puppy" 

test3.py

import test2 

print test2.dog 
test2.dog = "not a dog anymore" 
import test1 

如果您運行

python test3.py 

你會得到以下

puppy 
not a dog anymore 

正在發生的事情是test2的定義變量。導入它會在test3命名空間下引入該變量。然後test3更改變量並導入test.py.

類似地,test.py導入test2並打印變量。因爲它只是得到了參考變量,複製印刷新的價值,而不是最初投入的價值。

如果運行

python test.py 

,你會得到

puppy