Python 遗漏的论点
我有一个像下面这样的班Python 遗漏的论点,python,class,Python,Class,我有一个像下面这样的班 class A: def __init__(self:A,size:int): self.size=size 当我输入时,我喜欢: >>>a=A(5) >>>a.size >>>A.__init__(5) 它会来的 >>>5 然而,当我输入时,我喜欢: >>>a=A(5) >>>a.size >>>
class A:
def __init__(self:A,size:int):
self.size=size
当我输入时,我喜欢:
>>>a=A(5)
>>>a.size
>>>A.__init__(5)
它会来的
>>>5
然而,当我输入时,我喜欢:
>>>a=A(5)
>>>a.size
>>>A.__init__(5)
它将有一个缺少参数“size”错误。我只是不明白,为什么我输入了一个init-it仍然缺少参数?
\uuuu-init\uuuu
需要两个参数,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'
但是,这只是调用函数,不会生成新实例
b
是None
\uuuu init\uuuu
是Python中的构造函数;阅读详细解释该概念的答案
为了在Python中调用类上的函数(或“方法”),您需要一个classmethod;这解释了Python中classmethod
vs实例方法的作用
主要区别在于:
- 对于类方法,该类作为第一个参数传递给
classmethod
- 对于实例方法,实例本身作为第一个参数传递给该方法
(self:A,size:int)
不可能。self:A
应该会引发一个错误,因为A
在定义\uuuu init\uuu
时没有定义。@editor:谢谢,但这将是一个很好的评论。好的,我明白了。但是当我输入一个.uuu init_uuu5时,为什么它缺少size参数而不是self?因为参数是位置参数;它假定第一个是self
,因此size
必须缺失。