当在函数中使用self时,不允许我调用该函数

时间:2020-07-05 02:42:21

标签: python

对不起,如果这是一个愚蠢的问题,但是我是一个初学者,并且无法在google上找到答案,因此我想在这里学习。当我写

Class Buttons:
 def play_b(self):
    self.play_button = Button(main_window, text="Play")
    self.play_button.grid(row=0, column=0)

它返回TypeError: play_b() missing 1 required positional argument: 'self'

但是,当我编写以下代码时,它会完美工作:

class Buttons:
 def play_b():
    play_button = Button(main_window, text="Play")
    play_button.grid(row=0, column=0)
   

我的问题是:为什么会这样?函数不应该总是带有self关键字吗?

编辑:这是到目前为止的所有代码:这是到目前为止的所有代码:

from tkinter import *

main_window = Tk()
main_window.geometry("720x480")

class Buttons:
    def play_b():
        play_button = Button(main_window, text="Play")
        play_button.grid(row=0, column=0)

Buttons.play_b()

1 个答案:

答案 0 :(得分:1)

我相信您已经弄乱了注释中提到的方法调用。像这样调用方法

obj = Buttons() # assuming no parameterized __init__ (constructor) method
obj.play_b()

在第二种情况下,这是一个静态方法,即它对对象(自己)的数据不做任何事情,因此可以正常工作。但是更改不会反映在对象中。有关静态方法here的更多信息。

编辑

更新问题后,我看到您直接调用了类方法,而没有实例化它。因此出现了问题。解决方案仍然与我之前提到的相同。首先创建一个对象(实例化),然后使用该对象调用该方法。