2017-04-04 65 views
0

我有兩個文件f1.py & f2.py如何從另一個文件創建一個文件中存在的類的對象?

f1.py包含一個類C1

f2.py包含一個繼承C1的類C2

C1 containts構造

def __init__ (self, user_name, user_password, db_name): 

    self.user_name = user_name 
    self.user_password = user_password 
    self.db_name = db_name 

&的方法

def m1(self): 
    print user_name 

我在f2創建對象。

db3 = C2(user_name, user_password, db_name) 
db3.conn_establish() 

哪裏,所有傳遞的參數被分配一定的價值

如果C2存在於同一個文件C1。這將不會返回錯誤。但是,由於C2存在於另一個文件中。我得到一個錯誤

NameError: global name 'user_name' is not defined

要克服我不得不改變m1於:(只是一種變通方法,我發現)

def m1(self): 
    print self.user_name 

爲什麼加入self工作?

回答

2

您找到的解決方法是實現此目的的正確方法。 self參數實際上是您用來存儲和檢索信息的對象引用。如果不使用self,則使用靜態變量,因此如果創建多個C1實例(它是共享的),將會遇到麻煩。使用self將強制檢查實例的值(在類本身或從另一個類和/或文件中)。

+0

你能解釋一下它爲什麼會起作用嗎? –

+0

當然。新增說明。 –

0

應該不是你的函數定義是:

def m1(self): 
    print self.user_name 

否則你只是印刷的user_name一些全球價值。我假設f1.py中存在這樣一個值,當兩者都出現在同一個文件中時,它不會引發錯誤。

相關問題