1

我想定义一个类并创建一个对象实例。但总是出错。代码如下:

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

那么问题是什么?

感谢您的阅读!

4

2 回答 2

2

_init_每边应该有两个下划线:

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

另外,如您所知,Python 已经有一个complex类型:

>>> 2+3j
(2+3j)
>>> complex(2, 3)
(2+3j)
于 2013-02-20T04:25:02.883 回答
1

__init__应该有2个下划线而不是1个

所以

def _init_(self,realpart,imagpart):

应该

def __init__(self,realpart,imagpart):
  • 另一个建议是,元组解包不是多个分配,而是更具可读性和边际效率

  • 更喜欢新的类型类构造,它派生自object

  • PEP8 建议使用 CamelCase 作为类名

  • 如果可用,请始终使用电池,而不是自己滚动。Python 默认已经支持复杂类型

所以就这样

class complex(object):
    def __init__(self,realpart,imagpart):
        self.r, self.i=realpart, imagpart
于 2013-02-20T04:25:11.193 回答