2015-06-20 57 views
-1

我想知道如何初始化python中的對象,只有命名的參數,沒有別的,如果這是可能的。用關鍵字args初始化python對象

enter image description here

如果self.name =名稱和self.age =年齡的順序進行調換,錯誤是初始化的年齡。我把這些作爲關鍵字參數給了對象,那爲什麼還不夠呢?我看到一個類潛入python實例化了顯式命名關鍵字參數和它們的默認值(filename = None),所以我假設** kwargs也可以。謝謝

+2

我不是那個低估了你的問題的人,但FYI會更好地粘貼文本代碼而不是截圖。 –

回答

2

你缺少的是kwargs需要顯式檢索名稱。以下是您的代碼的修改版本,以進行說明。請注意0​​和age的初始化。

class Person(object): 
    def __init__(self, **kwargs): 
     self.name = kwargs.get('name') 
     self.age = kwargs.get('age') 
     # you'll probably want to check that all required 
     # members were initialized. 

bob = Person(name='bob', age=45) 

print bob 
print bob.age 

輸出:

<__main__.Person object at 0x1074e0bd0> 
45 
+0

並使用* args可以使用self.first_arg = args [0] :) ty先生Rothman – codyc4321

1

kwargs是一個字典。所以你應該這樣做:

class Person(object): 
    def __init__(self, **kwargs): 
     self.name = kwargs["name"] 
     self.age = kwargs["age"]