Python self在_init__和其他方法/函数中是必需的吗?

Python self在_init__和其他方法/函数中是必需的吗?,python,tkinter,self,Python,Tkinter,Self,我正在尝试制作一个包含多个框架的tkinter GUI,在创建类时,我包括了\uuu init\uuu>方法 我是否必须将self传递到该文件中,还是暗示 我正在看tkinter()的教程 他提到,self是隐含的,你不必使用它,但是我的老师告诉我们,你总是需要包含self 它在没有自我的情况下还能工作吗?或者它是必需的 此外,他说,它可以被称为任何你想,但我从来没有见过任何人使用其他名称 class MathematicalQuizApp(tk.tk): 定义初始化(self、*args、*k

我正在尝试制作一个包含多个框架的tkinter GUI,在创建类时,我包括了
\uuu init\uuu>方法

我是否必须将
self
传递到该文件中,还是暗示

我正在看tkinter()的教程

他提到,
self
是隐含的,你不必使用它,但是我的老师告诉我们,你总是需要包含self

它在没有自我的情况下还能工作吗?或者它是必需的

此外,他说,它可以被称为任何你想,但我从来没有见过任何人使用其他名称

class MathematicalQuizApp(tk.tk):
定义初始化(self、*args、*kwargs):
tk.tk.\uuuuu初始化(self,*args,**kwargs)
容器=tk.框架(自身)
container.pack(side=“top”,fill=“both”,expand=True)
container.grid_rowconfigure(0,权重=1)
container.grid\u column配置(0,权重=1)
self.frames={}
##之后的其他代码也可以使用self
您是否必须在
\uuuu init\uuuu
方法中传递self,或者它是隐含的,这意味着您不必包含它


如果可能的话,不包括它的实际意义是什么?

还没有看到视频链接,但我怀疑视频中“self是隐含的,您不必使用它”的意思是您不需要在init块中使用self,但它暗示init将作为第一个参数传递给init

本质上,无论你想如何读入视频,你的老师都是对的<类中的strong>方法将在第一个参数中获得对对象的引用(通常命名为self,但您甚至可以将名称更改为任何内容。self不是一个特殊的关键字)

无论您是否在init方法中使用它,都与您的第一个参数将是对对象的引用这一事实无关

  • 您混淆了两件事:
    self
    在调用构造函数(
    \uuuu init\uuu
    方法)时被暗示。(其他istance方法也是如此。)这意味着您不必(实际上:您不能)在创建实例时传递它,只需编写:
    my_app=MathematicalQuizApp()
    (不传递参数
    self

  • 在构造函数(以及任何instace方法)的定义中,第一个参数隐式地作为实例本身,因此命名。如果没有在任何实例方法中添加表示实例的参数,Python将把方法定义中的第一个参数作为实例。这很可能会导致一个例外

  • 您可以为参数
    self
    使用任何其他变量名。self的名字是很传统的。(但没有理由不使用它,也有很多理由坚持公约。)


  • 包括self,因为python将自动为您传递对象实例。检查python文档(OOP方法)怎么样