Python 为什么对象不将自身作为第一个参数发送

Python 为什么对象不将自身作为第一个参数发送,python,Python,在学习的过程中,课堂上对这个问题下了赌注。试图用方法创建一个新类并向它发送一些参数,在文献中我将“self”视为方法中的第一个参数,但在我的try not中 class smf(): def __init__(self): pass def check(self, A, B, C): print(A) a=smf a.check(input(), input(), input()) 程序需要4个参数,为什么?我错在哪里?正如评论中已经指出的那样,a=smf应该是a=s

在学习的过程中,课堂上对这个问题下了赌注。试图用方法创建一个新类并向它发送一些参数,在文献中我将“self”视为方法中的第一个参数,但在我的try not中

class smf():
  def __init__(self):
    pass
  def check(self, A, B, C):
    print(A)

a=smf
a.check(input(), input(), input())

程序需要4个参数,为什么?我错在哪里?

正如评论中已经指出的那样,
a=smf
应该是
a=smf()
。但是你为什么会犯这样的错误呢


在Python中,
instance.method(args…
class.method(instance,args…
)的一种语法糖,这解释了为什么方法的第一个参数是实例本身,通常称为
self
。通过执行
a=smf
a
是对类本身的另一个引用,因此您实际上是在
类中调用方法。方法(实例,args…
某种方式缺少
self
实例。

a=smf
应该是
a=smf()
。按照您编写它的方式,您永远不会创建实例。a、 check(..)与smf.check(..)相同,即使用对象引用调用类的函数,这就是为什么实际上只处理3个参数。如@kevmo314所述,通过smf()创建一个实例。