我希望有一个自定义"1 2"
类,可以将字符串作为输入(real
)并从那里读取imag
和class myComplex(complex):
def __init__(self, inp):
real, imag = inp.split()
self.real = float(real)
self.imag = float(imag)
comp = myComplex("1 2")
print comp # (1+2j)
部分。
Traceback (most recent call last):
File "my_complex.py", line 8, in <module>
comp1 = myComplex(inp1)
ValueError: complex() arg is a malformed string
但是我收到了错误:
__init__
这是否意味着我的complex
没有覆盖html, body
{
overflow-x: hidden
}
中的那个,或者我错过了一些基本的东西?
答案 0 :(得分:4)
Python complex
在__new__
中分配real
和imag
的值。
__new__
在__init__
之前运行,负责创建对象。执行(考虑myComplex
和complex
)如下所示:
myComplex("1 1")
myComplex.__new__(cls, inp)
complex.__new__(cls, real, imag)
myComplex.__init__(self, inp)
(complex.__init__
没有myComplex.__init__
没有"1 2"
这意味着在__init__
运行之前解析参数__new__
。
你应该覆盖class myComplex(complex):
def __new__(cls, inp):
real, imag = inp.split()
return super(myComplex, cls).__new__(cls, float(real), float(imag))
:
luaL_ref