2015-08-31 29 views
-1

我有一個名爲main.py的文件,在它旁邊有一個文件夾mymodule,裏面有__init__.pymyclass.py文件。Python:在導入類後打印在__init__.py中聲明的變量

在我的main.py想要導入mymodule,但那不是全部;我在__init__.py裏面有一個叫做version = '1.0'的變量,我想從main.py打印後輸入mymodule

認爲__init__.py的工作方式是,當我輸入mymodule__init__.py被「跑」第一?所以我想測試這個「理論」我把一個變量放在__init__.py裏面並在導入mymodule後打印出來。

mymodule剛剛在它宣佈一個簡單的類:

class MyClassWithCtor: 

    def __init__(self, number1, number2): 
     self.number1 = number1; 
     self.number2 = number2; 
     self.multi = self.__multiply() 

    def __multiply(self): 
     return self.number1 * self.number2 

我只是用它實例化類後打印出multi變量,所以我知道它的工作原理和所有。

總之

所以:

  • 我想正常導入的由單一類
  • ,但在導入該模塊時,我有一個在我__init__.py稱爲version變量,我想打印模塊導入後從main.py
+0

是什麼阻止你將'version ='1.0''放入'__init __。py'中? – glglgl

+0

@glglgl它在那裏,但main.py找不到它。 – Piwwoli

+0

首先使用'import mymodule'導入模塊,然後使用'print(mymodule.version)'打印'version',會出現什麼問題? – skyking

回答

1

我真的不明白你的問題是什麼,或者什麼類與任何事情有關。

直接在__init__.py中定義的變量可在包的名稱空間中找到。

from mymodule import version, myclass 
print version 
instance = myclass.MyClassWithCtor(1, 2) 
+0

如果我從'mymodule import *'執行''我不能在'c = MyClassWithCtor(1,2)'時找到這個類' – Piwwoli

+0

不,它不會。所以,不要這樣做。 (不要那樣做,但特別是不要這樣做。) –

+0

但是我的意思是爲什麼我需要知道除模塊名以外的任何其他內容? – Piwwoli