我有一类像下面缺少的参数
class A:
def __init__(self:A,size:int):
self.size=size
当我输入这样的:
>>>a=A(5)
>>>a.size
它会
>>>5
然而,当我输入这样的:
>>>A.__init__(5)
它将有一个缺少参数“大小”错误。我只是不明白,为什么我进入一个初始化它仍然失踪的论点?
我有一类像下面缺少的参数
class A:
def __init__(self:A,size:int):
self.size=size
当我输入这样的:
>>>a=A(5)
>>>a.size
它会
>>>5
然而,当我输入这样的:
>>>A.__init__(5)
它将有一个缺少参数“大小”错误。我只是不明白,为什么我进入一个初始化它仍然失踪的论点?
__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
。
@编辑:谢谢,但这对OP来说是一个很好的评论。 – aIKid
好吧,我明白了。但是当我进入A .__ init __(5)为什么它缺少大小参数而不是自己? – user1813564
因为参数是位置的;它假定第一个是'self',所以'size'必须丢失。 – jonrsharpe
'(self:A,size:int)'不能。 –
'self:A'应该引发一个错误,因为'__init__'被定义时'A'没有被定义。 –