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
    必须缺失。