TypeError: Missing 1 required positional argument: 'Caption'
所以我有2个.py文件:
FWY发动机
Py
在fw_engine.py中,我有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import pygame pygame.init() class Display: def __init__(self, window, button): self.window = window self.button = button def Window(self, WindowWidth, WindowHeight, Caption): GameDisplay = pygame.display.set_mode((WindowWidth, WindowHeight)) pygame.display.set_caption(Caption) def Button(self, DisplayWindow, Position_X, Position_Y): GreyColor = (96, 96, 96) pygame.draw.rect(DisplayWindow, GreyColor, (Position_X, Position_Y, 100, 20)) |
在test.py中,我有以下代码:
1 2 3 4 5 6 | from FW_Engine import Display import pygame pygame.init() GameDisplay = Display.Window(800, 600,"TestTitle") |
我不断地得到这个错误:
1 | TypeError: Window() missing 1 required positional argument: 'Caption' |
但正如您所看到的,我在函数调用中提供了所有3个必需的参数。怎么了?
编辑:两个.py文件在同一目录中。
问题是,您试图调用
您有两种选择:
从
1 | Display(window, button).Window(800, 600,"TestTitle") |
另一种不太可取的方法是将
1 2 | display = Display(window, button) Display.Window(display, 800, 600,"TestTitle") |
由于
1 2 3 4 5 6 7 8 9 | class Display: def __init__(self, window, button): self.window = window self.button = button @staticmethod def Window(WindowWidth, WindowHeight, Caption): GameDisplay = pygame.display.set_mode((WindowWidth, WindowHeight)) pygame.display.set_caption(Caption) |
Window方法不是静态方法,它是实例方法,因此在不实例化显示对象的情况下不能调用它。
window方法的第一个参数是self,它应该引用您创建的对象,在本例中,它是display对象。
但实际上你没有实例化它,所以当你调用window方法时,你缺少自变量,这就是你看到typeerror的原因。
尝试如下使用,创建显示对象后调用window方法。
1 | GameDisplay = Display(window, button).Window(800, 600,"TestTitle") |