2012-10-03 32 views
0

我需要定義一個需要多個關鍵字參數的類。定義採用多個關鍵字參數的python類

我的代碼如下所示:

class test1: 
    def __init__(self,parm1=val1, parm2=val2): 
     self.x = parm1 
     self.y = parm2 
     print('parm1',self.x) 


def main(): 
    x = test1(1,2) 

,但我得到val1沒有定義的錯誤。什麼是正確的方式?

+4

val1應該是什麼? –

回答

1

您需要之前定義val1val2定義你的類test

val1 = 1 
val2 = 3.141592653 

class test(object): 
    def __init__(self, param1=val1, param2=val2): 
     self.x = param1 
     self.y = param2 

這種方法可以有它的優勢(比如,從環境,如果val1val2應該是讀了一些通用的默認值...),但並不真正可讀。這將會是最好使用類似:

class test(object): 
    def __init__(self, param1=None, param2=None): 
     if param1 is None: 
      self.x = val1 
     else: 
      self.x = val2 

這裏再次,val1val2test定義之前定義...

2
def __init__(self,parm1=None,parm2=None):... 

不知道你是用VAL1和val2做......的錯誤是告訴你,這些變量不存在...所以你不能使用它們...所以做什麼他們存在或做其他事...

1

使val1和val2成爲一個字符串。作爲變量他們沒有定義。如果他們只是佔位符,則按其他人的建議使用無。

+0

謝謝..工作 – user1050619

0

函數參數的默認值必須存在,當功能def因爲它們的值的副本當時是作爲函數的編譯代碼的一部分存儲的,而不是每次函數被調用時。通常,None被用作聲明中的默認值,然後在函數的主體中被替換爲真實(可能是動態計算的)默認值。