【问题标题】:Why do I have to pass the self argument when I call a parent method in Python?为什么我在 Python 中调用父方法时必须传递 self 参数?
【发布时间】:2017-11-19 20:19:36
【问题描述】:

当我调用父类的方法时,我无法理解必须键入 self 背后的逻辑:

import tkinter as tk 
class myApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)

为什么我必须输入self in:container = tk.Frame(self)

【问题讨论】:

  • 因为该函数被定义为采用该参数。 self 参数与任何其他参数一样,实际上,它只是传统上 称为self,但您可以将其称为thisthatbanana。唯一的特殊之处在于,当作为实例上的方法调用时,它会自动与实例一起应用。当你直接从类中调用方法时,它只是另一个函数

标签: python class oop tkinter python-3.6


【解决方案1】:

小部件以树状结构存在。除了根窗口,每个小部件都有一个父窗口。

创建小部件时,第一个参数是新小部件的父级。在这种特定情况下,self 代表根窗口。由于它是唯一的其他小部件,因此它是container的父级的唯一选择

【讨论】:

  • 谢谢你!我得到了它。 Frame() 方法采用的第一个参数是父窗口,因为 myApp 对象实例是父窗口,所以我使用 self 来声明它。对吗?
  • @EduardoZacour:是的。
猜你喜欢
  • 1970-01-01
  • 2020-01-02
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
相关资源
最近更新 更多