2012-04-06 122 views
1

我做了一個類,看起來像。構造函數繼承自我python

class NewInt: 
    def __init__(self, x,y): 
    self.holders = {"x":x,"y":y} 

現在,我有一個數字說字典。所以,一切是完全一樣

除了它不是NewInt但dict.Somethng像

A {"x": 3,"y":4} 

所以正是型NewInt的除了它的字典。

有沒有一種方法,我可以這樣做

this_int = NewInt(A) 

我忘了,但有一個特殊的名字,以這樣的構造,其中分配做? 感謝

+1

我不太瞭解你......試試'this_int = NewInt(** A)'。 – 2012-04-06 22:07:57

+1

對於更一般的情況,您可能想要觀看[PEP 3124](http://www.python.org/dev/peps/pep-3124/),它會引入重載到python,使構造函數更容易變化基於輸入。 – 2012-04-06 22:13:40

回答

4

您可以使用keyword arguments

A = {"x": 3,"y":4} 
this_int = NewInt(**A) 

順便說一句,它看起來就像你重新實現complex numbers。這些已經內置到Python中,請嘗試complex(3,4)3+4j

+0

當字典有額外的關鍵字時,您可能需要添加一個額外的** kwargs參數才能起作用,否則您會針對意外的額外關鍵字參數獲取TypeError。 – Darthfett 2012-04-06 22:39:33