2013-02-20 36 views
1

我想定義一個類並創建一個對象實例。但總是得到錯誤。 的代碼是這樣的:在Python中創建對象實例的問題

class complex: 
    def _init_(self,realpart,imagpart): 
     self.r=realpart 
     self.i=imagpart 

x=complex(3,4) 

的錯誤信息是:

Traceback (most recent call last):<br> 
    File "pyshell#5", line 1, in "module" <br> 
    x=complex(3,4) <br> 
    TypeError: object.__new__() takes no parameters 

所以有什麼問題?

感謝您的閱讀!

+0

它應該是'__init__'不'_init_' – avasal 2013-02-20 04:25:24

+0

Python有複數的原生支持。 '3 + 4j'例如 – 2013-02-20 04:26:31

回答

2

_init_應在每側有兩個下劃線:

>>> class complex: 
...  def __init__(self,realpart,imagpart): 
...   self.r=realpart 
...   self.i=imagpart 
... 
>>> x=complex(3,4) 

而且,只要你知道,巨蟒已經有一個complex類型:

>>> 2+3j 
(2+3j) 
>>> complex(2, 3) 
(2+3j) 
1

__init__應該有2個下劃線圍繞着它而比1

所以

def _init_(self,realpart,imagpart): 

應該是

def __init__(self,realpart,imagpart): 
  • 還有一個提示,而不是多個分配,元組拆包將是更好的可讀性和稍微有效的

  • 不想新類型類構建體,其從object

    派生
  • PEP8 suggests使用CamelCase作爲類名稱

  • 請始終使用電池(如果有的話),而不是滾動自己的電池。蟒蛇已經支持複雜類型默認

所以這裏去

class complex(object): 
    def __init__(self,realpart,imagpart): 
     self.r, self.i=realpart, imagpart 
+0

哦,謝謝。 init()方法有兩個下劃線!謝謝! – 2013-02-20 04:37:27