我有一个类似下面的课程
class A:
def __init__(self:A,size:int):
self.size=size
当我输入时:
>>>a=A(5)
>>>a.size
它会来
>>>5
然而,当我输入如下:
>>>A.__init__(5)
它将缺少参数'size'错误。我只是不明白,为什么我进入一个init仍然缺少参数?
答案 0 :(得分:3)
__init__
需要两个参数self
和一个整数。这不是那么简单吗?
对于实例方法,Python会自动将实例的引用传递给您的函数。这就是为什么所有实例方法至少需要一个参数self
。
这是你的情况:
>>> class A:
def __init__(self)::
SyntaxError: invalid syntax
>>> class A:
def __init__(self):
print("Created!")
>>> a = A()
Created! #Success
>>> b = A.__init__()
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
b = A.__init__()
TypeError: __init__() missing 1 required positional argument: 'self'
嗯,难怪。 __init__
需要一个参数,但你没有传递任何东西。
但是,如果您坚持调用该函数,则可以使用另一个实例:
>>> b = A.__init__(a)
Created!
然而,这只是调用函数,并且不会生成新实例。 b
为None
。
答案 1 :(得分:1)